[FFmpeg-devel] [PATCH 4/6] ffmpeg: deprecate passing numbers to -vsync
Anton Khirnov
anton at khirnov.net
Sat Dec 4 19:41:16 EET 2021
There is never a reason to do this, using symbolic names is always
preferred.
---
doc/ffmpeg.texi | 16 +++++++++-------
fftools/ffmpeg_opt.c | 7 +++++--
2 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi
index 20a547381c..164419cad3 100644
--- a/doc/ffmpeg.texi
+++ b/doc/ffmpeg.texi
@@ -1620,23 +1620,25 @@ It is useful for when flow speed of output packets is important, such as live st
Read input at native frame rate. This is equivalent to setting @code{-readrate 1}.
@item -vsync @var{parameter}
Video sync method.
-For compatibility reasons old values can be specified as numbers.
-Newly added values will have to be specified as strings always.
+
+For compatibility reasons some of the values can be specified as numbers (shown
+in parentheses in the following table). This is deprecated and will stop working
+in the future.
@table @option
- at item 0, passthrough
+ at item passthrough (0)
Each frame is passed with its timestamp from the demuxer to the muxer.
- at item 1, cfr
+ at item cfr (1)
Frames will be duplicated and dropped to achieve exactly the requested
constant frame rate.
- at item 2, vfr
+ at item vfr (2)
Frames are passed through with their timestamp or dropped so as to
prevent 2 frames from having the same timestamp.
@item drop
As passthrough but destroys all timestamps, making the muxer generate
fresh timestamps based on frame-rate.
- at item -1, auto
-Chooses between 1 and 2 depending on muxer capabilities. This is the
+ at item auto (-1)
+Chooses between cfr and vfr depending on muxer capabilities. This is the
default method.
@end table
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
index 585e1018a3..a2a880e8e3 100644
--- a/fftools/ffmpeg_opt.c
+++ b/fftools/ffmpeg_opt.c
@@ -1741,7 +1741,7 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc, in
if ((frame_rate || max_frame_rate) &&
video_sync_method == VSYNC_PASSTHROUGH)
- av_log(NULL, AV_LOG_ERROR, "Using -vsync 0 and -r/-fpsmax can produce invalid output files\n");
+ av_log(NULL, AV_LOG_ERROR, "Using -vsync passthrough and -r/-fpsmax can produce invalid output files\n");
MATCH_PER_STREAM_OPT(frame_aspect_ratios, str, frame_aspect_ratio, oc, st);
if (frame_aspect_ratio) {
@@ -3201,8 +3201,11 @@ static int opt_vsync(void *optctx, const char *opt, const char *arg)
else if (!av_strcasecmp(arg, "passthrough")) video_sync_method = VSYNC_PASSTHROUGH;
else if (!av_strcasecmp(arg, "drop")) video_sync_method = VSYNC_DROP;
- if (video_sync_method == VSYNC_AUTO)
+ if (video_sync_method == VSYNC_AUTO) {
video_sync_method = parse_number_or_die("vsync", arg, OPT_INT, VSYNC_AUTO, VSYNC_VFR);
+ av_log(NULL, AV_LOG_WARNING, "Passing a number to -vsync is deprecated,"
+ " use a string argument as described in the manual.\n");
+ }
return 0;
}
--
2.33.0
More information about the ffmpeg-devel
mailing list