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

wm4 nfxjfg at googlemail.com
Fri May 4 16:00:11 EEST 2018


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.


More information about the ffmpeg-devel mailing list