diff options
author | Anton Khirnov <anton@khirnov.net> | 2023-07-21 16:13:58 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2023-08-30 11:53:50 +0200 |
commit | 411ada649f11724111fa3dfec833876f7989e01f (patch) | |
tree | 615b58b9ded2deecd02f711b9f8dab0bd3729655 | |
parent | 8b6b2518faf6fab23f9993498e71ab4fa1f1b812 (diff) | |
download | ffmpeg-411ada649f11724111fa3dfec833876f7989e01f.tar.gz |
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.c | 29 | ||||
-rw-r--r-- | tests/ref/fate/sub2video_basic | 182 | ||||
-rw-r--r-- | 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->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 |