[FFmpeg-devel] [PATCH 1/3] doc/encoders/libx264: review and extend option description
Gyan Doshi
ffmpeg at gyani.pro
Wed Sep 6 08:34:49 EEST 2023
On 2023-08-26 06:40 am, Stefano Sabatini wrote:
> Also, merge x264opts and x264-opts option docs to avoid duplication
> and make it even more clearer they provide the same functionality.
> ---
> doc/encoders.texi | 66 ++++++++++++++++++++++++++---------------------
> 1 file changed, 37 insertions(+), 29 deletions(-)
>
> diff --git a/doc/encoders.texi b/doc/encoders.texi
> index 6f8f5e127e..947b0c3320 100644
> --- a/doc/encoders.texi
> +++ b/doc/encoders.texi
> @@ -2418,6 +2418,10 @@ To get a more accurate and extensive documentation of the libx264
> options, invoke the command @command{x264 --fullhelp} or consult
> the libx264 documentation.
>
> +In the list below, note that the @command{x264} option name is shown
> +in parentheses after the libavcodec corresponding name, in case there
> +is a direct mapping.
> +
> @table @option
> @item b (@emph{bitrate})
> Set bitrate in bits/s. Note that FFmpeg's @option{b} option is
> @@ -2425,17 +2429,19 @@ expressed in bits/s, while @command{x264}'s @option{bitrate} is in
> kilobits/s.
>
> @item bf (@emph{bframes})
> +Number of B-frames between I and P-frames
>
> @item g (@emph{keyint})
> +Maximum GOP size
>
> @item qmin (@emph{qpmin})
> -Minimum quantizer scale.
> +Minimum quantizer scale
>
> @item qmax (@emph{qpmax})
> -Maximum quantizer scale.
> +Maximum quantizer scale
>
> @item qdiff (@emph{qpstep})
> -Maximum difference between quantizer scales.
> +Maximum difference between quantizer scales
>
> @item qblur (@emph{qblur})
> Quantizer curve blur
> @@ -2444,7 +2450,7 @@ Quantizer curve blur
> Quantizer curve compression factor
>
> @item refs (@emph{ref})
> -Number of reference frames each P-frame can use. The range is from @var{0-16}.
> +Number of reference frames each P-frame can use. The allowed range is @var{0-16}.
Allowed is implicit in the statement. Also, most statements of range
don't contain allow so prefer to keep it consistent.
> @item sc_threshold (@emph{scenecut})
> Sets the threshold for the scene change detection.
> @@ -2452,7 +2458,8 @@ Sets the threshold for the scene change detection.
> @item trellis (@emph{trellis})
> Performs Trellis quantization to increase efficiency. Enabled by default.
>
> - at item nr (@emph{nr})
> + at item nr (@emph{nr})
> +Noise reduction
>
> @item me_range (@emph{merange})
> Maximum range of the motion search in pixels.
> @@ -2533,6 +2540,7 @@ open GOP by setting it to @code{-cgop}. The result is similar to
> the behavior of @command{x264}'s @option{--open-gop} option.
>
> @item rc_init_occupancy (@emph{vbv-init})
> +Initial VBV buffer occupancy
>
> @item preset (@emph{preset})
> Set the encoding preset.
> @@ -2578,7 +2586,7 @@ Set AQ strength, reduce blocking and blurring in flat and textured areas.
> Use psychovisual optimizations when set to 1. When set to 0, it has the
> same effect as @command{x264}'s @option{--no-psy} option.
>
> - at item psy-rd (@emph{psy-rd})
> + at item psy-rd (@emph{psy-rd})
> Set strength of psychovisual optimization, in
> @var{psy-rd}:@var{psy-trellis} format.
>
> @@ -2610,7 +2618,7 @@ to 1.
>
> @item avcintra-class (@emph{class})
> Configure the encoder to generate AVC-Intra.
> -Valid values are 50,100 and 200
> +Valid values are 50, 100 and 200
>
> @item bluray-compat (@emph{bluray-compat})
> Configure the encoder to be compatible with the bluray standard.
> @@ -2661,8 +2669,8 @@ Set loop filter parameters, in @var{alpha}:@var{beta} form.
> Set fluctuations reduction in QP (before curve compression).
>
> @item partitions (@emph{partitions})
> -Set partitions to consider as a comma-separated list of. Possible
> -values in the list:
> +Set partitions to consider as a comma-separated list of
> +values. Possible values in the list:
>
> @table @samp
> @item p8x8
> @@ -2718,19 +2726,33 @@ Variable bit rate.
> Constant bit rate (not allowed in MP4 container).
> @end table
>
> - at item x264opts (N.A.)
> -Set any x264 option, see @command{x264 --fullhelp} for a list.
> + at item x264opts @var{opts}
> + at item x264-params @var{opts}
> +Override the x264 configuration using a :-separated list of key=value
> +options.
>
> -Argument is a list of @var{key}=@var{value} couples separated by
> -":". In @var{filter} and @var{psy-rd} options that use ":" as a separator
> -themselves, use "," instead. They accept it as well since long ago but this
> -is kept undocumented for some reason.
> + at option{x264-param} is functionally the same as the @option{x264opts},
> +but is duplicated for compatibility with the Libav fork.
There is a difference, in that x264opts accepts boolean args without a
value.
> +
> +The argument for both options is a list of @var{key}=@var{value}
> +couples separated by ":". In @var{filter} and @var{psy-rd} options
> +that use ":" as a separator themselves, use "," instead. They accept
> +it as well since long ago but this is kept undocumented for some
> +reason.
> +
> +For example, the options might be provided as:
> + at example
> +level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subq=6:8x8dct=0:trellis=0
> + at end example
>
> For example to specify libx264 encoding options with @command{ffmpeg}:
> @example
> ffmpeg -i foo.mpg -c:v libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
> @end example
>
> +To get the complete list of the libx264 options, invoke the command
> + at command{x264 --fullhelp} or consult the libx264 documentation.
May want to make it clear that x264 refers to the standalone CLI tool.
Regards,
Gyan
> +
> @item a53cc @var{boolean}
> Import closed captions (which must be ATSC compatible format) into output.
> Only the mpeg2 and h264 decoders provide these. Default is 1 (on).
> @@ -2741,20 +2763,6 @@ Import user data unregistered SEI if available into output. Default is 0 (off).
> @item mb_info @var{boolean}
> Set mb_info data through AVFrameSideData, only useful when used from the
> API. Default is 0 (off).
> -
> - at item x264-params (N.A.)
> -Override the x264 configuration using a :-separated list of key=value
> -parameters.
> -
> -This option is functionally the same as the @option{x264opts}, but is
> -duplicated for compatibility with the Libav fork.
> -
> -For example to specify libx264 encoding options with @command{ffmpeg}:
> - at example
> -ffmpeg -i INPUT -c:v libx264 -x264-params level=30:bframes=0:weightp=0:\
> -cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:\
> -no-fast-pskip=1:subq=6:8x8dct=0:trellis=0 OUTPUT
> - at end example
> @end table
>
> Encoding ffpresets for common usages are provided so they can be used with the
More information about the ffmpeg-devel
mailing list