[FFmpeg-devel] [PATCH] avformat/matroskaenc: do not write timebase as framerate

Carl Eugen Hoyos ceffmpeg at gmail.com
Sat May 5 03:35:52 EEST 2018


2018-05-04 15:00 GMT+02:00, wm4 <nfxjfg at googlemail.com>:
> On Sat, 28 Apr 2018 19:24:21 +0200
> wm4 <nfxjfg at googlemail.com> wrote:
>
>> If the API user doesn't set avg_frame_rate, matroskaenc will write the
>> current timebase as "default duration" for the video track. This makes
>> no sense, because the "default duration" implies the framerate of the
>> video. Since the timebase is forced to 1/1000, this will make the
>> resulting file claim 1000fps.
>>
>> Drop it and don't write the element. It's optional, so it's better not
>> to write it if the framerate is unknown.
>>
>> Strangely does not require FATE changes.
>> ---
>>  libavformat/matroskaenc.c | 2 --
>>  1 file changed, 2 deletions(-)
>>
>> diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
>> index 5950b4de44..b7ff1950d3 100644
>> --- a/libavformat/matroskaenc.c
>> +++ b/libavformat/matroskaenc.c
>> @@ -1304,8 +1304,6 @@ static int mkv_write_track(AVFormatContext *s,
>> MatroskaMuxContext *mkv,
>>          if(   st->avg_frame_rate.num > 0 && st->avg_frame_rate.den > 0
>>             && av_cmp_q(av_inv_q(st->avg_frame_rate), st->time_base) > 0)
>>              put_ebml_uint(pb, MATROSKA_ID_TRACKDEFAULTDURATION,
>> 1000000000LL * st->avg_frame_rate.den / st->avg_frame_rate.num);
>> -        else
>> -            put_ebml_uint(pb, MATROSKA_ID_TRACKDEFAULTDURATION,
>> 1000000000LL * st->time_base.num / st->time_base.den);
>>
>>          if (!native_id &&
>>              ff_codec_get_tag(ff_codec_movvideo_tags, par->codec_id) &&
>
> Pushed.

Good to know that your behaviour hasn't improved.

Carl Eugen


More information about the ffmpeg-devel mailing list