[FFmpeg-devel] [PATCH 07/18] fftools/ffmpeg_enc: only use fallback framerate when encoding CFR
Anton Khirnov
anton at khirnov.net
Sat Aug 26 18:11:33 EEST 2023
When no output video framerate is specified by the user with -r or can
be inferred from the filtergraph, encoder setup will arbitrarily decide
that the framerate is 25fps. However, making up any framerate value for
VFR encoding is at best unnecessary.
Changes the results of the sub2video tests, where the input timebase is
now used instead of 1/25.
---
fftools/ffmpeg_enc.c | 29 ++--
tests/ref/fate/sub2video_basic | 182 +++++++++++++-------------
tests/ref/fate/sub2video_time_limited | 8 +-
3 files changed, 112 insertions(+), 107 deletions(-)
diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c
index 4b5bd3d9b4..80a49fe606 100644
--- a/fftools/ffmpeg_enc.c
+++ b/fftools/ffmpeg_enc.c
@@ -231,20 +231,24 @@ static int enc_choose_timebase(OutputStream *ost, AVFrame *frame)
fr = ost->frame_rate;
if (!fr.num)
fr = fd->frame_rate_filter;
- if (!fr.num && !ost->max_frame_rate.num) {
- fr = (AVRational){25, 1};
- av_log(ost, AV_LOG_WARNING,
- "No information "
- "about the input framerate is available. Falling "
- "back to a default value of 25fps. Use the -r option "
- "if you want a different framerate.\n");
+
+ if (ost->is_cfr) {
+ if (!fr.num && !ost->max_frame_rate.num) {
+ fr = (AVRational){25, 1};
+ av_log(ost, AV_LOG_WARNING,
+ "No information "
+ "about the input framerate is available. Falling "
+ "back to a default value of 25fps. Use the -r option "
+ "if you want a different framerate.\n");
+ }
+
+ if (ost->max_frame_rate.num &&
+ (av_q2d(fr) > av_q2d(ost->max_frame_rate) ||
+ !fr.den))
+ fr = ost->max_frame_rate;
}
- if (ost->max_frame_rate.num &&
- (av_q2d(fr) > av_q2d(ost->max_frame_rate) ||
- !fr.den))
- fr = ost->max_frame_rate;
-
+ if (fr.num > 0) {
if (enc->codec->supported_framerates && !ost->force_fps) {
int idx = av_find_nearest_q_idx(fr, enc->codec->supported_framerates);
fr = enc->codec->supported_framerates[idx];
@@ -254,6 +258,7 @@ static int enc_choose_timebase(OutputStream *ost, AVFrame *frame)
av_reduce(&fr.num, &fr.den,
fr.num, fr.den, 65535);
}
+ }
if (av_q2d(fr) > 1e3 && ost->vsync_method != VSYNC_PASSTHROUGH &&
(ost->vsync_method == VSYNC_CFR || ost->vsync_method == VSYNC_VSCFR ||
diff --git a/tests/ref/fate/sub2video_basic b/tests/ref/fate/sub2video_basic
index 5f72e292c9..a6eb1a34ea 100644
--- a/tests/ref/fate/sub2video_basic
+++ b/tests/ref/fate/sub2video_basic
@@ -1,95 +1,95 @@
-#tb 0: 1/25
+#tb 0: 1/1000
#media_type 0: video
#codec_id 0: rawvideo
#dimensions 0: 720x480
#sar 0: 0/1
-0, 3312, 3312, 1, 1382400, 0x00000000
-0, 3312, 3312, 1, 1382400, 0x8c93c2ba
-0, 3436, 3436, 1, 1382400, 0x00000000
-0, 3684, 3684, 1, 1382400, 0xb02e32ca
-0, 3802, 3802, 1, 1382400, 0x00000000
-0, 4520, 4520, 1, 1382400, 0x83b71116
-0, 4584, 4584, 1, 1382400, 0x00000000
-0, 4586, 4586, 1, 1382400, 0x85547fd1
-0, 4645, 4645, 1, 1382400, 0x00000000
-0, 4648, 4648, 1, 1382400, 0x00000000
-0, 4648, 4648, 1, 1382400, 0xb6a8f181
-0, 4715, 4715, 1, 1382400, 0x00000000
-0, 4717, 4717, 1, 1382400, 0xb64d1a2c
-0, 4748, 4748, 1, 1382400, 0x00000000
-0, 4750, 4750, 1, 1382400, 0x7b37ecf3
-0, 4792, 4792, 1, 1382400, 0x00000000
-0, 4993, 4993, 1, 1382400, 0xdc025bd1
-0, 5027, 5027, 1, 1382400, 0x00000000
-0, 5029, 5029, 1, 1382400, 0x688b294d
-0, 5068, 5068, 1, 1382400, 0x00000000
-0, 5070, 5070, 1, 1382400, 0xa2b33d1b
-0, 5117, 5117, 1, 1382400, 0x00000000
-0, 5119, 5119, 1, 1382400, 0xb3e525e3
-0, 5168, 5168, 1, 1382400, 0x00000000
-0, 5170, 5170, 1, 1382400, 0xaa8fbdd7
-0, 5216, 5216, 1, 1382400, 0x00000000
-0, 5218, 5218, 1, 1382400, 0x7b7f26dd
-0, 5249, 5249, 1, 1382400, 0x00000000
-0, 5251, 5251, 1, 1382400, 0x15e2f836
-0, 5289, 5289, 1, 1382400, 0x00000000
-0, 5291, 5291, 1, 1382400, 0x0fee9b0c
-0, 5358, 5358, 1, 1382400, 0x00000000
-0, 5360, 5360, 1, 1382400, 0x89d62791
-0, 5429, 5429, 1, 1382400, 0x00000000
-0, 5431, 5431, 1, 1382400, 0xa6a9fd74
-0, 5490, 5490, 1, 1382400, 0x00000000
-0, 5491, 5491, 1, 1382400, 0x7896178d
-0, 5537, 5537, 1, 1382400, 0x00000000
-0, 5588, 5588, 1, 1382400, 0x01751a52
-0, 5647, 5647, 1, 1382400, 0x00000000
-0, 5688, 5688, 1, 1382400, 0xa3959c6f
-0, 5770, 5770, 1, 1382400, 0x00000000
-0, 5772, 5772, 1, 1382400, 0x3d3ea47b
-0, 5826, 5826, 1, 1382400, 0x00000000
-0, 5828, 5828, 1, 1382400, 0x593f8b24
-0, 5931, 5931, 1, 1382400, 0x00000000
-0, 5933, 5933, 1, 1382400, 0x171f05ba
-0, 6001, 6001, 1, 1382400, 0x00000000
-0, 6003, 6003, 1, 1382400, 0xb014cdf1
-0, 6054, 6054, 1, 1382400, 0x00000000
-0, 6839, 6839, 1, 1382400, 0xd918e667
-0, 6880, 6880, 1, 1382400, 0x00000000
-0, 7386, 7386, 1, 1382400, 0xc9406331
-0, 7419, 7419, 1, 1382400, 0x00000000
-0, 7501, 7501, 1, 1382400, 0xaf08b10d
-0, 7549, 7549, 1, 1382400, 0x00000000
-0, 7551, 7551, 1, 1382400, 0x00000000
-0, 7551, 7551, 1, 1382400, 0x853a9d93
-0, 7589, 7589, 1, 1382400, 0x00000000
-0, 7605, 7605, 1, 1382400, 0x7491a87d
-0, 7647, 7647, 1, 1382400, 0x00000000
-0, 7649, 7649, 1, 1382400, 0xf7383c58
-0, 7697, 7697, 1, 1382400, 0x00000000
-0, 7699, 7699, 1, 1382400, 0xe66be411
-0, 7743, 7743, 1, 1382400, 0x00000000
-0, 8032, 8032, 1, 1382400, 0xd6850362
-0, 8082, 8082, 1, 1382400, 0x00000000
-0, 8084, 8084, 1, 1382400, 0x3e1ed109
-0, 8115, 8115, 1, 1382400, 0x00000000
-0, 8116, 8116, 1, 1382400, 0x39c1b7bd
-0, 8160, 8160, 1, 1382400, 0x00000000
-0, 8180, 8180, 1, 1382400, 0x35b85f2e
-0, 8207, 8207, 1, 1382400, 0x00000000
-0, 8209, 8209, 1, 1382400, 0x00000000
-0, 8209, 8209, 1, 1382400, 0x83f103e5
-0, 8247, 8247, 1, 1382400, 0x00000000
-0, 8249, 8249, 1, 1382400, 0xbc1ca9b3
-0, 8278, 8278, 1, 1382400, 0x00000000
-0, 8281, 8281, 1, 1382400, 0x94d4a51e
-0, 8321, 8321, 1, 1382400, 0x00000000
-0, 8323, 8323, 1, 1382400, 0xf88cdfde
-0, 8367, 8367, 1, 1382400, 0x00000000
-0, 8565, 8565, 1, 1382400, 0xdd51423b
-0, 8611, 8611, 1, 1382400, 0x00000000
-0, 8669, 8669, 1, 1382400, 0x08259fa4
-0, 8708, 8708, 1, 1382400, 0x00000000
-0, 8941, 8941, 1, 1382400, 0x1663fa34
-0, 8994, 8994, 1, 1382400, 0x00000000
-0, 8996, 8996, 1, 1382400, 0xda2ceb55
-0, 9027, 9027, 1, 1382400, 0x00000000
+0, 132499, 132499, 0, 1382400, 0x00000000
+0, 132499, 132499, 0, 1382400, 0x8c93c2ba
+0, 137459, 137459, 0, 1382400, 0x00000000
+0, 147355, 147355, 0, 1382400, 0xb02e32ca
+0, 152088, 152088, 0, 1382400, 0x00000000
+0, 180797, 180797, 0, 1382400, 0x83b71116
+0, 183357, 183357, 0, 1382400, 0x00000000
+0, 183433, 183433, 0, 1382400, 0x85547fd1
+0, 185799, 185799, 0, 1382400, 0x00000000
+0, 185909, 185909, 0, 1382400, 0x00000000
+0, 185910, 185910, 0, 1382400, 0xb6a8f181
+0, 188606, 188606, 0, 1382400, 0x00000000
+0, 188663, 188663, 0, 1382400, 0xb64d1a2c
+0, 189925, 189925, 0, 1382400, 0x00000000
+0, 190014, 190014, 0, 1382400, 0x7b37ecf3
+0, 191675, 191675, 0, 1382400, 0x00000000
+0, 199724, 199724, 0, 1382400, 0xdc025bd1
+0, 201089, 201089, 0, 1382400, 0x00000000
+0, 201175, 201175, 0, 1382400, 0x688b294d
+0, 202733, 202733, 0, 1382400, 0x00000000
+0, 202819, 202819, 0, 1382400, 0xa2b33d1b
+0, 204684, 204684, 0, 1382400, 0x00000000
+0, 204762, 204762, 0, 1382400, 0xb3e525e3
+0, 206730, 206730, 0, 1382400, 0x00000000
+0, 206806, 206806, 0, 1382400, 0xaa8fbdd7
+0, 208637, 208637, 0, 1382400, 0x00000000
+0, 208716, 208716, 0, 1382400, 0x7b7f26dd
+0, 209978, 209978, 0, 1382400, 0x00000000
+0, 210051, 210051, 0, 1382400, 0x15e2f836
+0, 211575, 211575, 0, 1382400, 0x00000000
+0, 211644, 211644, 0, 1382400, 0x0fee9b0c
+0, 214306, 214306, 0, 1382400, 0x00000000
+0, 214380, 214380, 0, 1382400, 0x89d62791
+0, 217144, 217144, 0, 1382400, 0x00000000
+0, 217225, 217225, 0, 1382400, 0xa6a9fd74
+0, 219591, 219591, 0, 1382400, 0x00000000
+0, 219652, 219652, 0, 1382400, 0x7896178d
+0, 221483, 221483, 0, 1382400, 0x00000000
+0, 223531, 223531, 0, 1382400, 0x01751a52
+0, 225863, 225863, 0, 1382400, 0x00000000
+0, 227510, 227510, 0, 1382400, 0xa3959c6f
+0, 230809, 230809, 0, 1382400, 0x00000000
+0, 230872, 230872, 0, 1382400, 0x3d3ea47b
+0, 233033, 233033, 0, 1382400, 0x00000000
+0, 233124, 233124, 0, 1382400, 0x593f8b24
+0, 237220, 237220, 0, 1382400, 0x00000000
+0, 237303, 237303, 0, 1382400, 0x171f05ba
+0, 240033, 240033, 0, 1382400, 0x00000000
+0, 240106, 240106, 0, 1382400, 0xb014cdf1
+0, 242165, 242165, 0, 1382400, 0x00000000
+0, 273556, 273556, 0, 1382400, 0xd918e667
+0, 275217, 275217, 0, 1382400, 0x00000000
+0, 295445, 295445, 0, 1382400, 0xc9406331
+0, 296776, 296776, 0, 1382400, 0x00000000
+0, 300049, 300049, 0, 1382400, 0xaf08b10d
+0, 301949, 301949, 0, 1382400, 0x00000000
+0, 302034, 302034, 0, 1382400, 0x00000000
+0, 302035, 302035, 0, 1382400, 0x853a9d93
+0, 303559, 303559, 0, 1382400, 0x00000000
+0, 304203, 304203, 0, 1382400, 0x7491a87d
+0, 305898, 305898, 0, 1382400, 0x00000000
+0, 305947, 305947, 0, 1382400, 0xf7383c58
+0, 307881, 307881, 0, 1382400, 0x00000000
+0, 307957, 307957, 0, 1382400, 0xe66be411
+0, 309720, 309720, 0, 1382400, 0x00000000
+0, 321295, 321295, 0, 1382400, 0xd6850362
+0, 323263, 323263, 0, 1382400, 0x00000000
+0, 323356, 323356, 0, 1382400, 0x3e1ed109
+0, 324584, 324584, 0, 1382400, 0x00000000
+0, 324640, 324640, 0, 1382400, 0x39c1b7bd
+0, 326403, 326403, 0, 1382400, 0x00000000
+0, 327193, 327193, 0, 1382400, 0x35b85f2e
+0, 328285, 328285, 0, 1382400, 0x00000000
+0, 328360, 328360, 0, 1382400, 0x00000000
+0, 328361, 328361, 0, 1382400, 0x83f103e5
+0, 329885, 329885, 0, 1382400, 0x00000000
+0, 329946, 329946, 0, 1382400, 0xbc1ca9b3
+0, 331106, 331106, 0, 1382400, 0x00000000
+0, 331230, 331230, 0, 1382400, 0x94d4a51e
+0, 332857, 332857, 0, 1382400, 0x00000000
+0, 332924, 332924, 0, 1382400, 0xf88cdfde
+0, 334687, 334687, 0, 1382400, 0x00000000
+0, 342600, 342600, 0, 1382400, 0xdd51423b
+0, 344431, 344431, 0, 1382400, 0x00000000
+0, 346771, 346771, 0, 1382400, 0x08259fa4
+0, 348329, 348329, 0, 1382400, 0x00000000
+0, 357640, 357640, 0, 1382400, 0x1663fa34
+0, 359767, 359767, 0, 1382400, 0x00000000
+0, 359834, 359834, 0, 1382400, 0xda2ceb55
+0, 361096, 361096, 0, 1382400, 0x00000000
diff --git a/tests/ref/fate/sub2video_time_limited b/tests/ref/fate/sub2video_time_limited
index 9fb6fb06f9..c7d48d639f 100644
--- a/tests/ref/fate/sub2video_time_limited
+++ b/tests/ref/fate/sub2video_time_limited
@@ -1,8 +1,8 @@
-#tb 0: 1/25
+#tb 0: 1/90000
#media_type 0: video
#codec_id 0: rawvideo
#dimensions 0: 1920x1080
#sar 0: 0/1
-0, 2, 2, 1, 8294400, 0x00000000
-0, 2, 2, 1, 8294400, 0xa87c518f
-0, 10, 10, 1, 8294400, 0xa87c518f
+0, 6072, 6072, 0, 8294400, 0x00000000
+0, 6072, 6072, 0, 8294400, 0xa87c518f
+0, 36101, 36101, 0, 8294400, 0xa87c518f
--
2.40.1
More information about the ffmpeg-devel
mailing list