Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Anton Khirnov <anton@khirnov.net>
To: ffmpeg-devel@ffmpeg.org
Subject: [FFmpeg-devel] [PATCH 07/18] fftools/ffmpeg_enc: only use fallback framerate when encoding CFR
Date: Sat, 26 Aug 2023 17:11:33 +0200
Message-ID: <20230826151144.24858-7-anton@khirnov.net> (raw)
In-Reply-To: <20230826151144.24858-1-anton@khirnov.net>

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

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

  parent reply	other threads:[~2023-08-26 15:14 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-26 15:11 [FFmpeg-devel] [PATCH 01/18] fftools/ffmpeg: stop explicitly closing output streams on input EOF Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 02/18] fftools/ffmpeg: simplify handling input -t for streamcopy Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 03/18] fftools/ffmpeg_mux: use correct timebases for bitstream filtering Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 04/18] fftools/ffmpeg_mux: stop rescaling timestamps in of_streamcopy() Anton Khirnov
2023-08-26 20:20   ` Michael Niedermayer
2023-08-27 10:50     ` [FFmpeg-devel] [PATCH 04/18 v2] " Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 05/18] fftools/ffmpeg_enc: factor out setting encoder timebase Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 06/18] fftools/ffmpeg_enc: reindent after previous commit Anton Khirnov
2023-08-26 15:11 ` Anton Khirnov [this message]
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 08/18] " Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 09/18] fftools/ffmpeg_filter: sanitize framerate retrieved from the filtergraph Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 10/18] fftools/ffmpeg: move derivation of frame duration from filter framerate Anton Khirnov
2023-08-29  8:07   ` Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 11/18] fftools/ffmpeg_enc: move handling video frame duration to video_sync_process() Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 12/18] fftools/ffmpeg_filter: factor processing a single frame out of reap_filters() Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 13/18] fftools/ffmpeg_filter: reindent after previous commit Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 14/18] fftools/ffmpeg_filter: shorten a variable name Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 15/18] fftools/ffmpeg_enc: move remaining vsync-related code to video_sync_process() Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 16/18] fftools/ffmpeg_enc: simplify adjust_frame_pts_to_encoder_tb() signature Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 17/18] fftools/ffmpeg_mux: rename of_close() to of_free() Anton Khirnov
2023-08-26 15:11 ` [FFmpeg-devel] [PATCH 18/18] fftools/ffmpeg: move sending filtergraph commands to a separate function Anton Khirnov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230826151144.24858-7-anton@khirnov.net \
    --to=anton@khirnov.net \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git