diff options
author | Nicolas Gaullier <nicolas.gaullier@cji.paris> | 2024-09-03 10:02:28 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2024-09-04 13:01:37 +0200 |
commit | 59d2900df7c212845ddca79906fba1e3b3096e64 (patch) | |
tree | 954204bbf8fb6e2fb9e43a41201e503018e89116 | |
parent | 0b6d7cd9d97f388148654c902c5dff81e74ccfde (diff) | |
download | ffmpeg-59d2900df7c212845ddca79906fba1e3b3096e64.tar.gz |
avformat/mxfenc: Fix guess frame_rate
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@cji.paris>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
-rw-r--r-- | libavformat/mxfenc.c | 8 | ||||
-rw-r--r-- | tests/ref/fate/time_base | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 4ac6a2d715..57be9e6ef6 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; + AVRational tbc = (AVRational){ 0, 0 }; + 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); + // Default component depth to 8 sc->component_depth = 8; sc->h_chroma_sub_sample = 2; diff --git a/tests/ref/fate/time_base b/tests/ref/fate/time_base index fd6cac53fc..23875d1fb8 100644 --- a/tests/ref/fate/time_base +++ b/tests/ref/fate/time_base @@ -1 +1 @@ -d408aba82d62a90ed7f46a1999b014f1 +b28d4ca13029fdc80a114b56467be9d7 |