summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2023-07-21 16:13:58 +0200
committerAnton Khirnov <anton@khirnov.net>2023-08-30 11:53:50 +0200
commit411ada649f11724111fa3dfec833876f7989e01f (patch)
tree615b58b9ded2deecd02f711b9f8dab0bd3729655
parent8b6b2518faf6fab23f9993498e71ab4fa1f1b812 (diff)
fftools/ffmpeg_enc: only use fallback framerate when encoding CFR
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.
-rw-r--r--fftools/ffmpeg_enc.c29
-rw-r--r--tests/ref/fate/sub2video_basic182
-rw-r--r--tests/ref/fate/sub2video_time_limited8
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->max_frame_rate.num &&
- (av_q2d(fr) > av_q2d(ost->max_frame_rate) ||
- !fr.den))
- fr = ost->max_frame_rate;
+ 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 (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