[FFmpeg-devel] [PATCH v2] avformat/flvdec: use milisecond precision for parsing timestamps

Marton Balint cus at passwd.hu
Fri May 21 00:14:35 EEST 2021



On Sun, 16 May 2021, Anton Khirnov wrote:

> Quoting Marton Balint (2021-05-14 21:28:06)
>> Also use helper function to set the timestamp. Maybe we could also use
>> nanosecond precision, but there were some float rounding concerns.
>>
>> Signed-off-by: Marton Balint <cus at passwd.hu>
>> ---
>>  libavformat/flvdec.c     | 11 ++---------
>>  tests/ref/fate/flv-demux |  2 +-
>>  2 files changed, 3 insertions(+), 10 deletions(-)
>>
>> diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
>> index ddaceaafe4..6bd6c8c944 100644
>> --- a/libavformat/flvdec.c
>> +++ b/libavformat/flvdec.c
>> @@ -28,6 +28,7 @@
>>  #include "libavutil/channel_layout.h"
>>  #include "libavutil/dict.h"
>>  #include "libavutil/opt.h"
>> +#include "libavutil/internal.h"
>>  #include "libavutil/intfloat.h"
>>  #include "libavutil/mathematics.h"
>>  #include "libavutil/time_internal.h"
>> @@ -682,17 +683,9 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream,
>>          } else if (amf_type == AMF_DATA_TYPE_STRING) {
>>              av_dict_set(&s->metadata, key, str_val, 0);
>>          } else if (amf_type == AMF_DATA_TYPE_DATE) {
>> -            time_t time;
>> -            struct tm t;
>> -            char datestr[128];
>> -            time =  date.milliseconds / 1000; // to seconds
>> -            gmtime_r(&time, &t);
>> -
>>              // timezone is ignored, since there is no easy way to offset the UTC
>>              // timestamp into the specified timezone
>> -            strftime(datestr, sizeof(datestr), "%Y-%m-%dT%H:%M:%SZ", &t);
>> -
>> -            av_dict_set(&s->metadata, key, datestr, 0);
>> +            avpriv_dict_set_timestamp(&s->metadata, key, 1000 * (int64_t)date.milliseconds);
>
> No objections, if it passes FATE everywhere.

Thanks, applied, will keep an eye on FATE.

Regards,
Marton


More information about the ffmpeg-devel mailing list