[FFmpeg-devel] [PATCH v2 1/2] avformat/mxfenc: Fix guess frame_rate

Tomas Härdin git at haerdin.se
Mon Aug 26 12:51:48 EEST 2024


fre 2024-08-23 klockan 10:14 +0200 skrev Nicolas Gaullier:
> The time_base was a bad guess.
> 
> Currently, fate-time_base test data assumed that overriding the input
> time_base would affect the frame_rate, but this behaviour is not
> documented, so just fix the fate data now that this is fixed.
> 
> Fix regression since 10185e2d4c1e9839bc58a1d6a63c861677b13fd0:
> previously, when streamcopying, the time_base was guessed from the
> frame_rate considering it is often constant, so guessing the
> frame_rate
> back from the time_base was often not a problem.
> 
> To reproduce:
> ffmpeg -i fate-suite/mpeg2/dvd_still_frame.vob -an -c copy out.mxf
> 
> Signed-off-by: Nicolas Gaullier <nicolas.gaullier at cji.paris>
> ---
>  libavformat/mxfenc.c     | 6 +++++-
>  tests/ref/fate/time_base | 2 +-
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
> index 4ac6a2d715..57f4c674f3 100644
> --- a/libavformat/mxfenc.c
> +++ b/libavformat/mxfenc.c
> @@ -2894,8 +2894,12 @@ static int mxf_init(AVFormatContext *s)
>  
>          if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
>              const AVPixFmtDescriptor *pix_desc =
> av_pix_fmt_desc_get(st->codecpar->format);
> -            // TODO: should be avg_frame_rate
>              AVRational tbc = st->time_base;
> +            if (st->avg_frame_rate.num > 0 && st->avg_frame_rate.den
> > 0)
> +                tbc = av_inv_q(st->avg_frame_rate);
> +            else if (st->r_frame_rate.num > 0 && st-
> >r_frame_rate.den > 0)
> +                tbc = av_inv_q(st->r_frame_rate);

This is probably fine for now, but it should be said that frame rate
and EditRate are not necessarily the same. We might want an explicit
EditRate option. But we can wait for users to actually request that
feature

/Tomas


More information about the ffmpeg-devel mailing list