Merge commit '8a9de5c52401aa1e87bdb147524831c640d1ec53'
authorHendrik Leppkes <h.leppkes@gmail.com>
Sun, 29 Nov 2015 14:24:29 +0000 (15:24 +0100)
committerHendrik Leppkes <h.leppkes@gmail.com>
Sun, 29 Nov 2015 14:24:29 +0000 (15:24 +0100)
* commit '8a9de5c52401aa1e87bdb147524831c640d1ec53':
  doc/encoders: document the QSV option mappings

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
1  2 
doc/encoders.texi

@@@ -494,1941 -412,514 +494,2029 @@@ Selected by Encoder (default
  
  @end table
  
 -@section libwavpack
 +@anchor{flac}
 +@section flac
  
 -A wrapper providing WavPack encoding through libwavpack.
 +FLAC (Free Lossless Audio Codec) Encoder
  
 -Only lossless mode using 32-bit integer samples is supported currently.
 -The @option{compression_level} option can be used to control speed vs.
 -compression tradeoff, with the values mapped to libwavpack as follows:
 +@subsection Options
 +
 +The following options are supported by FFmpeg's flac encoder.
  
  @table @option
 +@item compression_level
 +Sets the compression level, which chooses defaults for many other options
 +if they are not set explicitly.
  
 -@item 0
 -Fast mode - corresponding to the wavpack @option{-f} option.
 +@item frame_size
 +Sets the size of the frames in samples per channel.
  
 -@item 1
 -Normal (default) settings.
 +@item lpc_coeff_precision
 +Sets the LPC coefficient precision, valid values are from 1 to 15, 15 is the
 +default.
  
 -@item 2
 -High quality - corresponding to the wavpack @option{-h} option.
 +@item lpc_type
 +Sets the first stage LPC algorithm
 +@table @samp
 +@item none
 +LPC is not used
  
 -@item 3
 -Very high quality - corresponding to the wavpack @option{-hh} option.
 +@item fixed
 +fixed LPC coefficients
  
 -@item 4-8
 -Same as 3, but with extra processing enabled - corresponding to the wavpack
 -@option{-x} option. I.e. 4 is the same as @option{-x2} and 8 is the same as
 -@option{-x6}.
 +@item levinson
  
 +@item cholesky
  @end table
  
 -@c man end AUDIO ENCODERS
 +@item lpc_passes
 +Number of passes to use for Cholesky factorization during LPC analysis
  
 -@chapter Video Encoders
 -@c man begin VIDEO ENCODERS
 +@item min_partition_order
 +The minimum partition order
  
 -@section libwebp
 +@item max_partition_order
 +The maximum partition order
  
 -libwebp WebP Image encoder wrapper
 +@item prediction_order_method
 +@table @samp
 +@item estimation
 +@item 2level
 +@item 4level
 +@item 8level
 +@item search
 +Bruteforce search
 +@item log
 +@end table
  
 -libwebp is Google's official encoder for WebP images. It can encode in either
 -lossy or lossless mode. Lossy images are essentially a wrapper around a VP8
 -frame. Lossless images are a separate codec developed by Google.
 +@item ch_mode
 +Channel mode
 +@table @samp
 +@item auto
 +The mode is chosen automatically for each frame
 +@item indep
 +Chanels are independently coded
 +@item left_side
 +@item right_side
 +@item mid_side
 +@end table
  
 -@subsection Pixel Format
 +@item exact_rice_parameters
 +Chooses if rice parameters are calculated exactly or approximately.
 +if set to 1 then they are chosen exactly, which slows the code down slightly and
 +improves compression slightly.
  
 -Currently, libwebp only supports YUV420 for lossy and RGB for lossless due
 -to limitations of the format and libwebp. Alpha is supported for either mode.
 -Because of API limitations, if RGB is passed in when encoding lossy or YUV is
 -passed in for encoding lossless, the pixel format will automatically be
 -converted using functions from libwebp. This is not ideal and is done only for
 -convenience.
 +@item multi_dim_quant
 +Multi Dimensional Quantization. If set to 1 then a 2nd stage LPC algorithm is
 +applied after the first stage to finetune the coefficients. This is quite slow
 +and slightly improves compression.
  
 -@subsection Options
 +@end table
  
 -@table @option
 +@anchor{libfaac}
 +@section libfaac
  
 -@item -lossless @var{boolean}
 -Enables/Disables use of lossless mode. Default is 0.
 +libfaac AAC (Advanced Audio Coding) encoder wrapper.
  
 -@item -compression_level @var{integer}
 -For lossy, this is a quality/speed tradeoff. Higher values give better quality
 -for a given size at the cost of increased encoding time. For lossless, this is
 -a size/speed tradeoff. Higher values give smaller size at the cost of increased
 -encoding time. More specifically, it controls the number of extra algorithms
 -and compression tools used, and varies the combination of these tools. This
 -maps to the @var{method} option in libwebp. The valid range is 0 to 6.
 -Default is 4.
 +Requires the presence of the libfaac headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libfaac --enable-nonfree}.
  
 -@item -qscale @var{float}
 -For lossy encoding, this controls image quality, 0 to 100. For lossless
 -encoding, this controls the effort and time spent at compressing more. The
 -default value is 75. Note that for usage via libavcodec, this option is called
 -@var{global_quality} and must be multiplied by @var{FF_QP2LAMBDA}.
 +This encoder is considered to be of higher quality with respect to the
 +@ref{aacenc,,the native experimental FFmpeg AAC encoder}.
  
 -@item -preset @var{type}
 -Configuration preset. This does some automatic settings based on the general
 -type of the image.
 -@table @option
 -@item none
 -Do not use a preset.
 -@item default
 -Use the encoder default.
 -@item picture
 -Digital picture, like portrait, inner shot
 -@item photo
 -Outdoor photograph, with natural lighting
 -@item drawing
 -Hand or line drawing, with high-contrast details
 -@item icon
 -Small-sized colorful images
 -@item text
 -Text-like
 -@end table
 +For more information see the libfaac project at
 +@url{http://www.audiocoding.com/faac.html/}.
  
 -@item lumi_aq
 -Enable lumi masking adaptive quantization when set to 1. Default is 0
 -(disabled).
 +@subsection Options
  
 -@item variance_aq
 -Enable variance adaptive quantization when set to 1. Default is 0
 -(disabled).
 +The following shared FFmpeg codec options are recognized.
  
 -When combined with @option{lumi_aq}, the resulting quality will not
 -be better than any of the two specified individually. In other
 -words, the resulting quality will be the worse one of the two
 -effects.
 +The following options are supported by the libfaac wrapper. The
 +@command{faac}-equivalent of the options are listed in parentheses.
  
 -@item ssim
 -Set structural similarity (SSIM) displaying method. Possible values:
 +@table @option
 +@item b (@emph{-b})
 +Set bit rate in bits/s for ABR (Average Bit Rate) mode. If the bit rate
 +is not explicitly specified, it is automatically set to a suitable
 +value depending on the selected profile. @command{faac} bitrate is
 +expressed in kilobits/s.
  
 -@table @samp
 -@item off
 -Disable displaying of SSIM information.
 +Note that libfaac does not support CBR (Constant Bit Rate) but only
 +ABR (Average Bit Rate).
  
 -@item avg
 -Output average SSIM at the end of encoding to stdout. The format of
 -showing the average SSIM is:
 +If VBR mode is enabled this option is ignored.
  
 -@example
 -Average SSIM: %f
 -@end example
 +@item ar (@emph{-R})
 +Set audio sampling rate (in Hz).
  
 -For users who are not familiar with C, %f means a float number, or
 -a decimal (e.g. 0.939232).
 +@item ac (@emph{-c})
 +Set the number of audio channels.
  
 -@item frame
 -Output both per-frame SSIM data during encoding and average SSIM at
 -the end of encoding to stdout. The format of per-frame information
 -is:
 +@item cutoff (@emph{-C})
 +Set cutoff frequency. If not specified (or explicitly set to 0) it
 +will use a value automatically computed by the library. Default value
 +is 0.
  
 -@example
 -       SSIM: avg: %1.3f min: %1.3f max: %1.3f
 -@end example
 +@item profile
 +Set audio profile.
  
 -For users who are not familiar with C, %1.3f means a float number
 -rounded to 3 digits after the dot (e.g. 0.932).
 +The following profiles are recognized:
 +@table @samp
 +@item aac_main
 +Main AAC (Main)
  
 -@end table
 +@item aac_low
 +Low Complexity AAC (LC)
  
 -@item ssim_acc
 -Set SSIM accuracy. Valid options are integers within the range of
 -0-4, while 0 gives the most accurate result and 4 computes the
 -fastest.
 +@item aac_ssr
 +Scalable Sample Rate (SSR)
  
 +@item aac_ltp
 +Long Term Prediction (LTP)
  @end table
  
 -@section libx264
 +If not specified it is set to @samp{aac_low}.
  
 -x264 H.264/MPEG-4 AVC encoder wrapper
 +@item flags +qscale
 +Set constant quality VBR (Variable Bit Rate) mode.
  
 -x264 supports an impressive number of features, including 8x8 and 4x4 adaptive
 -spatial transform, adaptive B-frame placement, CAVLC/CABAC entropy coding,
 -interlacing (MBAFF), lossless mode, psy optimizations for detail retention
 -(adaptive quantization, psy-RD, psy-trellis).
 +@item global_quality
 +Set quality in VBR mode as an integer number of lambda units.
  
 -The Libav wrapper provides a mapping for most of them using global options
 -that match those of the encoders and provides private options for the unique
 -encoder options. Additionally an expert override is provided to directly pass
 -a list of key=value tuples as accepted by x264_param_parse.
 +Only relevant when VBR mode is enabled with @code{flags +qscale}.  The
 +value is converted to QP units by dividing it by @code{FF_QP2LAMBDA},
 +and used to set the quality value used by libfaac. A reasonable range
 +for the option value in QP units is [10-500], the higher the value the
 +higher the quality.
  
 -@subsection Option Mapping
 -
 -The following options are supported by the x264 wrapper, the x264-equivalent
 -options follow the Libav ones.
 -
 -@multitable {                  } {              } {                           }
 -@item b                 @tab bitrate
 -@tab Libav @code{b} option is expressed in bits/s, x264 @code{bitrate} in kilobits/s.
 -@item bf                @tab bframes
 -@tab Maximum number of B-frames.
 -@item g                 @tab keyint
 -@tab Maximum GOP size.
 -@item qmin              @tab qpmin
 -@tab Minimum quantizer scale.
 -@item qmax              @tab qpmax
 -@tab Maximum quantizer scale.
 -@item qdiff             @tab qpstep
 -@tab Maximum difference between quantizer scales.
 -@item qblur             @tab qblur
 -@tab Quantizer curve blur
 -@item qcomp             @tab qcomp
 -@tab Quantizer curve compression factor
 -@item refs              @tab ref
 -@tab Number of reference frames each P-frame can use. The range is from @var{0-16}.
 -@item sc_threshold      @tab scenecut
 -@tab Sets the threshold for the scene change detection.
 -@item trellis           @tab trellis
 -@tab Performs Trellis quantization to increase efficiency. Enabled by default.
 -@item nr                @tab nr
 -@tab Noise reduction.
 -@item me_range          @tab merange
 -@tab Maximum range of the motion search in pixels.
 -@item subq              @tab subme
 -@tab Sub-pixel motion estimation method.
 -@item b_strategy        @tab b-adapt
 -@tab Adaptive B-frame placement decision algorithm. Use only on first-pass.
 -@item keyint_min        @tab min-keyint
 -@tab Minimum GOP size.
 -@item coder             @tab cabac
 -@tab Set coder to @code{ac} to use CABAC.
 -@item cmp               @tab chroma-me
 -@tab Set to @code{chroma} to use chroma motion estimation.
 -@item threads           @tab threads
 -@tab Number of encoding threads.
 -@item thread_type       @tab sliced_threads
 -@tab Set to @code{slice} to use sliced threading instead of frame threading.
 -@item flags -cgop       @tab open-gop
 -@tab Set @code{-cgop} to use recovery points to close GOPs.
 -@item rc_init_occupancy @tab vbv-init
 -@tab Initial buffer occupancy.
 -@end multitable
 -
 -@subsection Private Options
 -@table @option
 -@item -preset @var{string}
 -Set the encoding preset (cf. x264 --fullhelp).
 -@item -tune @var{string}
 -Tune the encoding params (cf. x264 --fullhelp).
 -@item -profile @var{string}
 -Set profile restrictions (cf. x264 --fullhelp).
 -@item -fastfirstpass @var{integer}
 -Use fast settings when encoding first pass.
 -@item -crf @var{float}
 -Select the quality for constant quality mode.
 -@item -crf_max @var{float}
 -In CRF mode, prevents VBV from lowering quality beyond this point.
 -@item -qp @var{integer}
 -Constant quantization parameter rate control method.
 -@item -aq-mode @var{integer}
 -AQ method
 +@item q (@emph{-q})
 +Enable VBR mode when set to a non-negative value, and set constant
 +quality value as a double floating point value in QP units.
  
 -Possible values:
 -@table @samp
 -@item none
 +The value sets the quality value used by libfaac. A reasonable range
 +for the option value is [10-500], the higher the value the higher the
 +quality.
  
 -@item variance
 -Variance AQ (complexity mask).
 -@item autovariance
 -Auto-variance AQ (experimental).
 +This option is valid only using the @command{ffmpeg} command-line
 +tool. For library interface users, use @option{global_quality}.
  @end table
 -@item -aq-strength @var{float}
 -AQ strength, reduces blocking and blurring in flat and textured areas.
 -@item -psy @var{integer}
 -Use psychovisual optimizations.
 -@item -psy-rd @var{string}
 -Strength of psychovisual optimization, in <psy-rd>:<psy-trellis> format.
 -@item -rc-lookahead @var{integer}
 -Number of frames to look ahead for frametype and ratecontrol.
 -@item -weightb @var{integer}
 -Weighted prediction for B-frames.
 -@item -weightp @var{integer}
 -Weighted prediction analysis method.
  
 -Possible values:
 -@table @samp
 -@item none
 +@subsection Examples
  
 -@item simple
 +@itemize
 +@item
 +Use @command{ffmpeg} to convert an audio file to ABR 128 kbps AAC in an M4A (MP4)
 +container:
 +@example
 +ffmpeg -i input.wav -codec:a libfaac -b:a 128k -output.m4a
 +@end example
  
 -@item smart
 +@item
 +Use @command{ffmpeg} to convert an audio file to VBR AAC, using the
 +LTP AAC profile:
 +@example
 +ffmpeg -i input.wav -c:a libfaac -profile:a aac_ltp -q:a 100 output.m4a
 +@end example
 +@end itemize
  
 -@end table
 -@item -ssim @var{integer}
 -Calculate and print SSIM stats.
 -@item -intra-refresh @var{integer}
 -Use Periodic Intra Refresh instead of IDR frames.
 -@item -bluray-compat @var{integer}
 -Configure the encoder to be compatible with the bluray standard.
 -It is a shorthand for setting "bluray-compat=1 force-cfr=1".
 -@item -b-bias @var{integer}
 -Influences how often B-frames are used.
 -@item -b-pyramid @var{integer}
 -Keep some B-frames as references.
 +@anchor{libfdk-aac-enc}
 +@section libfdk_aac
  
 -Possible values:
 -@table @samp
 -@item none
 +libfdk-aac AAC (Advanced Audio Coding) encoder wrapper.
  
 -@item strict
 -Strictly hierarchical pyramid.
 -@item normal
 -Non-strict (not Blu-ray compatible).
 -@end table
 -@item -mixed-refs @var{integer}
 -One reference per partition, as opposed to one reference per macroblock.
 -@item -8x8dct @var{integer}
 -High profile 8x8 transform.
 -@item -fast-pskip @var{integer}
 -@item -aud @var{integer}
 -Use access unit delimiters.
 -@item -mbtree @var{integer}
 -Use macroblock tree ratecontrol.
 -@item -deblock @var{string}
 -Loop filter parameters, in <alpha:beta> form.
 -@item -cplxblur @var{float}
 -Reduce fluctuations in QP (before curve compression).
 -@item -partitions @var{string}
 -A comma-separated list of partitions to consider, possible values: p8x8, p4x4, b8x8, i8x8, i4x4, none, all.
 -@item -direct-pred @var{integer}
 -Direct MV prediction mode
 +The libfdk-aac library is based on the Fraunhofer FDK AAC code from
 +the Android project.
  
 -Possible values:
 -@table @samp
 -@item none
 +Requires the presence of the libfdk-aac headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libfdk-aac}. The library is also incompatible with GPL,
 +so if you allow the use of GPL, you should configure with
 +@code{--enable-gpl --enable-nonfree --enable-libfdk-aac}.
  
 -@item spatial
 +This encoder is considered to be of higher quality with respect to
 +both @ref{aacenc,,the native experimental FFmpeg AAC encoder} and
 +@ref{libfaac}.
  
 -@item temporal
 +VBR encoding, enabled through the @option{vbr} or @option{flags
 ++qscale} options, is experimental and only works with some
 +combinations of parameters.
  
 -@item auto
 +Support for encoding 7.1 audio is only available with libfdk-aac 0.1.3 or
 +higher.
  
 -@end table
 -@item -slice-max-size @var{integer}
 -Limit the size of each slice in bytes.
 -@item -stats @var{string}
 -Filename for 2 pass stats.
 -@item -nal-hrd @var{integer}
 -Signal HRD information (requires vbv-bufsize; cbr not allowed in .mp4).
 +For more information see the fdk-aac project at
 +@url{http://sourceforge.net/p/opencore-amr/fdk-aac/}.
  
 -Possible values:
 -@table @samp
 -@item none
 +@subsection Options
  
 -@item vbr
 +The following options are mapped on the shared FFmpeg codec options.
  
 -@item cbr
 +@table @option
 +@item b
 +Set bit rate in bits/s. If the bitrate is not explicitly specified, it
 +is automatically set to a suitable value depending on the selected
 +profile.
  
 -@end table
 -@item -x264-params @var{string}
 -Override the x264 configuration using a :-separated list of key=value parameters.
 -@example
 --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
 -@end example
 -@end table
 +In case VBR mode is enabled the option is ignored.
  
 -Encoding avpresets for common usages are provided so they can be used with the
 -general presets system (e.g. passing the @code{-pre} option).
 +@item ar
 +Set audio sampling rate (in Hz).
  
 -@section ProRes
 +@item channels
 +Set the number of audio channels.
  
 -Apple ProRes encoder.
 +@item flags +qscale
 +Enable fixed quality, VBR (Variable Bit Rate) mode.
 +Note that VBR is implicitly enabled when the @option{vbr} value is
 +positive.
  
 -@subsection Private Options
 +@item cutoff
 +Set cutoff frequency. If not specified (or explicitly set to 0) it
 +will use a value automatically computed by the library. Default value
 +is 0.
  
 -@table @option
 -@item profile @var{integer}
 -Select the ProRes profile to encode
 -@table @samp
 -@item proxy
 -@item lt
 -@item standard
 -@item hq
 -@item 4444
 -@end table
 +@item profile
 +Set audio profile.
  
 -@item quant_mat @var{integer}
 -Select quantization matrix.
 +The following profiles are recognized:
  @table @samp
 -@item auto
 -@item default
 -@item proxy
 -@item lt
 -@item standard
 -@item hq
 -@end table
 -If set to @var{auto}, the matrix matching the profile will be picked.
 -If not set, the matrix providing the highest quality, @var{default}, will be
 -picked.
 +@item aac_low
 +Low Complexity AAC (LC)
  
 -@item bits_per_mb @var{integer}
 -How many bits to allot for coding one macroblock. Different profiles use
 -between 200 and 2400 bits per macroblock, the maximum is 8000.
 +@item aac_he
 +High Efficiency AAC (HE-AAC)
  
 -@item mbs_per_slice @var{integer}
 -Number of macroblocks in each slice (1-8); the default value (8)
 -should be good in almost all situations.
 +@item aac_he_v2
 +High Efficiency AAC version 2 (HE-AACv2)
  
 -@item vendor @var{string}
 -Override the 4-byte vendor ID.
 -A custom vendor ID like @var{apl0} would claim the stream was produced by
 -the Apple encoder.
 +@item aac_ld
 +Low Delay AAC (LD)
  
 -@item alpha_bits @var{integer}
 -Specify number of bits for alpha component.
 -Possible values are @var{0}, @var{8} and @var{16}.
 -Use @var{0} to disable alpha plane coding.
 +@item aac_eld
 +Enhanced Low Delay AAC (ELD)
 +@end table
  
 +If not specified it is set to @samp{aac_low}.
  @end table
  
 -@subsection Speed considerations
 +The following are private options of the libfdk_aac encoder.
  
 -In the default mode of operation the encoder has to honor frame constraints
 -(i.e. not produc frames with size bigger than requested) while still making
 -output picture as good as possible.
 -A frame containing a lot of small details is harder to compress and the encoder
 -would spend more time searching for appropriate quantizers for each slice.
 +@table @option
 +@item afterburner
 +Enable afterburner feature if set to 1, disabled if set to 0. This
 +improves the quality but also the required processing power.
  
 -Setting a higher @option{bits_per_mb} limit will improve the speed.
 +Default value is 1.
  
 -For the fastest encoding speed set the @option{qscale} parameter (4 is the
 -recommended value) and do not set a size constraint.
 +@item eld_sbr
 +Enable SBR (Spectral Band Replication) for ELD if set to 1, disabled
 +if set to 0.
  
 -@section libkvazaar
 +Default value is 0.
  
 -Kvazaar H.265/HEVC encoder.
 +@item signaling
 +Set SBR/PS signaling style.
  
 -Requires the presence of the libkvazaar headers and library during
 -configuration. You need to explicitly configure the build with
 -@option{--enable-libkvazaar}.
 +It can assume one of the following values:
 +@table @samp
 +@item default
 +choose signaling implicitly (explicit hierarchical by default,
 +implicit if global header is disabled)
  
 -@subsection Options
 +@item implicit
 +implicit backwards compatible signaling
  
 -@table @option
 +@item explicit_sbr
 +explicit SBR, implicit PS signaling
  
 -@item b
 -Set target video bitrate in bit/s and enable rate control.
 +@item explicit_hierarchical
 +explicit hierarchical signaling
 +@end table
  
 -@item kvazaar-params
 -Set kvazaar parameters as a list of @var{name}=@var{value} pairs separated
 -by commas (,). See kvazaar documentation for a list of options.
 +Default value is @samp{default}.
  
 -@end table
 +@item latm
 +Output LATM/LOAS encapsulated data if set to 1, disabled if set to 0.
  
 -@section QSV encoders
 +Default value is 0.
  
 -The family of Intel QuickSync Video encoders (MPEG-2, H.264 and HEVC)
 +@item header_period
 +Set StreamMuxConfig and PCE repetition period (in frames) for sending
 +in-band configuration buffers within LATM/LOAS transport layer.
 +
 +Must be a 16-bits non-negative integer.
 +
 +Default value is 0.
 +
 +@item vbr
 +Set VBR mode, from 1 to 5. 1 is lowest quality (though still pretty
 +good) and 5 is highest quality. A value of 0 will disable VBR, and CBR
 +(Constant Bit Rate) is enabled.
 +
 +Currently only the @samp{aac_low} profile supports VBR encoding.
 +
 +VBR modes 1-5 correspond to roughly the following average bit rates:
 +
 +@table @samp
 +@item 1
 +32 kbps/channel
 +@item 2
 +40 kbps/channel
 +@item 3
 +48-56 kbps/channel
 +@item 4
 +64 kbps/channel
 +@item 5
 +about 80-96 kbps/channel
 +@end table
 +
 +Default value is 0.
 +@end table
 +
 +@subsection Examples
 +
 +@itemize
 +@item
 +Use @command{ffmpeg} to convert an audio file to VBR AAC in an M4A (MP4)
 +container:
 +@example
 +ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
 +@end example
 +
 +@item
 +Use @command{ffmpeg} to convert an audio file to CBR 64k kbps AAC, using the
 +High-Efficiency AAC profile:
 +@example
 +ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
 +@end example
 +@end itemize
 +
 +@anchor{libmp3lame}
 +@section libmp3lame
 +
 +LAME (Lame Ain't an MP3 Encoder) MP3 encoder wrapper.
 +
 +Requires the presence of the libmp3lame headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libmp3lame}.
 +
 +See @ref{libshine} for a fixed-point MP3 encoder, although with a
 +lower quality.
 +
 +@subsection Options
 +
 +The following options are supported by the libmp3lame wrapper. The
 +@command{lame}-equivalent of the options are listed in parentheses.
 +
 +@table @option
 +@item b (@emph{-b})
 +Set bitrate expressed in bits/s for CBR or ABR. LAME @code{bitrate} is
 +expressed in kilobits/s.
 +
 +@item q (@emph{-V})
 +Set constant quality setting for VBR. This option is valid only
 +using the @command{ffmpeg} command-line tool. For library interface
 +users, use @option{global_quality}.
 +
 +@item compression_level (@emph{-q})
 +Set algorithm quality. Valid arguments are integers in the 0-9 range,
 +with 0 meaning highest quality but slowest, and 9 meaning fastest
 +while producing the worst quality.
 +
 +@item reservoir
 +Enable use of bit reservoir when set to 1. Default value is 1. LAME
 +has this enabled by default, but can be overridden by use
 +@option{--nores} option.
 +
 +@item joint_stereo (@emph{-m j})
 +Enable the encoder to use (on a frame by frame basis) either L/R
 +stereo or mid/side stereo. Default value is 1.
 +
 +@item abr (@emph{--abr})
 +Enable the encoder to use ABR when set to 1. The @command{lame}
 +@option{--abr} sets the target bitrate, while this options only
 +tells FFmpeg to use ABR still relies on @option{b} to set bitrate.
 +
 +@end table
 +
 +@section libopencore-amrnb
 +
 +OpenCORE Adaptive Multi-Rate Narrowband encoder.
 +
 +Requires the presence of the libopencore-amrnb headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libopencore-amrnb --enable-version3}.
 +
 +This is a mono-only encoder. Officially it only supports 8000Hz sample rate,
 +but you can override it by setting @option{strict} to @samp{unofficial} or
 +lower.
 +
 +@subsection Options
 +
 +@table @option
 +
 +@item b
 +Set bitrate in bits per second. Only the following bitrates are supported,
 +otherwise libavcodec will round to the nearest valid bitrate.
 +
 +@table @option
 +@item 4750
 +@item 5150
 +@item 5900
 +@item 6700
 +@item 7400
 +@item 7950
 +@item 10200
 +@item 12200
 +@end table
 +
 +@item dtx
 +Allow discontinuous transmission (generate comfort noise) when set to 1. The
 +default value is 0 (disabled).
 +
 +@end table
 +
 +@anchor{libshine}
 +@section libshine
 +
 +Shine Fixed-Point MP3 encoder wrapper.
 +
 +Shine is a fixed-point MP3 encoder. It has a far better performance on
 +platforms without an FPU, e.g. armel CPUs, and some phones and tablets.
 +However, as it is more targeted on performance than quality, it is not on par
 +with LAME and other production-grade encoders quality-wise. Also, according to
 +the project's homepage, this encoder may not be free of bugs as the code was
 +written a long time ago and the project was dead for at least 5 years.
 +
 +This encoder only supports stereo and mono input. This is also CBR-only.
 +
 +The original project (last updated in early 2007) is at
 +@url{http://sourceforge.net/projects/libshine-fxp/}. We only support the
 +updated fork by the Savonet/Liquidsoap project at @url{https://github.com/savonet/shine}.
 +
 +Requires the presence of the libshine headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libshine}.
 +
 +See also @ref{libmp3lame}.
 +
 +@subsection Options
 +
 +The following options are supported by the libshine wrapper. The
 +@command{shineenc}-equivalent of the options are listed in parentheses.
 +
 +@table @option
 +@item b (@emph{-b})
 +Set bitrate expressed in bits/s for CBR. @command{shineenc} @option{-b} option
 +is expressed in kilobits/s.
 +
 +@end table
 +
 +@section libtwolame
 +
 +TwoLAME MP2 encoder wrapper.
 +
 +Requires the presence of the libtwolame headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libtwolame}.
 +
 +@subsection Options
 +
 +The following options are supported by the libtwolame wrapper. The
 +@command{twolame}-equivalent options follow the FFmpeg ones and are in
 +parentheses.
 +
 +@table @option
 +@item b (@emph{-b})
 +Set bitrate expressed in bits/s for CBR. @command{twolame} @option{b}
 +option is expressed in kilobits/s. Default value is 128k.
 +
 +@item q (@emph{-V})
 +Set quality for experimental VBR support. Maximum value range is
 +from -50 to 50, useful range is from -10 to 10. The higher the
 +value, the better the quality. This option is valid only using the
 +@command{ffmpeg} command-line tool. For library interface users,
 +use @option{global_quality}.
 +
 +@item mode (@emph{--mode})
 +Set the mode of the resulting audio. Possible values:
 +
 +@table @samp
 +@item auto
 +Choose mode automatically based on the input. This is the default.
 +@item stereo
 +Stereo
 +@item joint_stereo
 +Joint stereo
 +@item dual_channel
 +Dual channel
 +@item mono
 +Mono
 +@end table
 +
 +@item psymodel (@emph{--psyc-mode})
 +Set psychoacoustic model to use in encoding. The argument must be
 +an integer between -1 and 4, inclusive. The higher the value, the
 +better the quality. The default value is 3.
 +
 +@item energy_levels (@emph{--energy})
 +Enable energy levels extensions when set to 1. The default value is
 +0 (disabled).
 +
 +@item error_protection (@emph{--protect})
 +Enable CRC error protection when set to 1. The default value is 0
 +(disabled).
 +
 +@item copyright (@emph{--copyright})
 +Set MPEG audio copyright flag when set to 1. The default value is 0
 +(disabled).
 +
 +@item original (@emph{--original})
 +Set MPEG audio original flag when set to 1. The default value is 0
 +(disabled).
 +
 +@end table
 +
 +@anchor{libvo-aacenc}
 +@section libvo-aacenc
 +
 +VisualOn AAC encoder.
 +
 +Requires the presence of the libvo-aacenc headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libvo-aacenc --enable-version3}.
 +
 +This encoder is considered to be worse than the
 +@ref{aacenc,,native experimental FFmpeg AAC encoder}, according to
 +multiple sources.
 +
 +@subsection Options
 +
 +The VisualOn AAC encoder only support encoding AAC-LC and up to 2
 +channels. It is also CBR-only.
 +
 +@table @option
 +
 +@item b
 +Set bit rate in bits/s.
 +
 +@end table
 +
 +@section libvo-amrwbenc
 +
 +VisualOn Adaptive Multi-Rate Wideband encoder.
 +
 +Requires the presence of the libvo-amrwbenc headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libvo-amrwbenc --enable-version3}.
 +
 +This is a mono-only encoder. Officially it only supports 16000Hz sample
 +rate, but you can override it by setting @option{strict} to
 +@samp{unofficial} or lower.
 +
 +@subsection Options
 +
 +@table @option
 +
 +@item b
 +Set bitrate in bits/s. Only the following bitrates are supported, otherwise
 +libavcodec will round to the nearest valid bitrate.
 +
 +@table @samp
 +@item 6600
 +@item 8850
 +@item 12650
 +@item 14250
 +@item 15850
 +@item 18250
 +@item 19850
 +@item 23050
 +@item 23850
 +@end table
 +
 +@item dtx
 +Allow discontinuous transmission (generate comfort noise) when set to 1. The
 +default value is 0 (disabled).
 +
 +@end table
 +
 +@section libopus
 +
 +libopus Opus Interactive Audio Codec encoder wrapper.
 +
 +Requires the presence of the libopus headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libopus}.
 +
 +@subsection Option Mapping
 +
 +Most libopus options are modelled after the @command{opusenc} utility from
 +opus-tools. The following is an option mapping chart describing options
 +supported by the libopus wrapper, and their @command{opusenc}-equivalent
 +in parentheses.
 +
 +@table @option
 +
 +@item b (@emph{bitrate})
 +Set the bit rate in bits/s.  FFmpeg's @option{b} option is
 +expressed in bits/s, while @command{opusenc}'s @option{bitrate} in
 +kilobits/s.
 +
 +@item vbr (@emph{vbr}, @emph{hard-cbr}, and @emph{cvbr})
 +Set VBR mode. The FFmpeg @option{vbr} option has the following
 +valid arguments, with the @command{opusenc} equivalent options
 +in parentheses:
 +
 +@table @samp
 +@item off (@emph{hard-cbr})
 +Use constant bit rate encoding.
 +
 +@item on (@emph{vbr})
 +Use variable bit rate encoding (the default).
 +
 +@item constrained (@emph{cvbr})
 +Use constrained variable bit rate encoding.
 +@end table
 +
 +@item compression_level (@emph{comp})
 +Set encoding algorithm complexity. Valid options are integers in
 +the 0-10 range. 0 gives the fastest encodes but lower quality, while 10
 +gives the highest quality but slowest encoding. The default is 10.
 +
 +@item frame_duration (@emph{framesize})
 +Set maximum frame size, or duration of a frame in milliseconds. The
 +argument must be exactly the following: 2.5, 5, 10, 20, 40, 60. Smaller
 +frame sizes achieve lower latency but less quality at a given bitrate.
 +Sizes greater than 20ms are only interesting at fairly low bitrates.
 +The default is 20ms.
 +
 +@item packet_loss (@emph{expect-loss})
 +Set expected packet loss percentage. The default is 0.
 +
 +@item application (N.A.)
 +Set intended application type. Valid options are listed below:
 +
 +@table @samp
 +@item voip
 +Favor improved speech intelligibility.
 +@item audio
 +Favor faithfulness to the input (the default).
 +@item lowdelay
 +Restrict to only the lowest delay modes.
 +@end table
 +
 +@item cutoff (N.A.)
 +Set cutoff bandwidth in Hz. The argument must be exactly one of the
 +following: 4000, 6000, 8000, 12000, or 20000, corresponding to
 +narrowband, mediumband, wideband, super wideband, and fullband
 +respectively. The default is 0 (cutoff disabled).
 +
 +@end table
 +
 +@section libvorbis
 +
 +libvorbis encoder wrapper.
 +
 +Requires the presence of the libvorbisenc headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libvorbis}.
 +
 +@subsection Options
 +
 +The following options are supported by the libvorbis wrapper. The
 +@command{oggenc}-equivalent of the options are listed in parentheses.
 +
 +To get a more accurate and extensive documentation of the libvorbis
 +options, consult the libvorbisenc's and @command{oggenc}'s documentations.
 +See @url{http://xiph.org/vorbis/},
 +@url{http://wiki.xiph.org/Vorbis-tools}, and oggenc(1).
 +
 +@table @option
 +@item b (@emph{-b})
 +Set bitrate expressed in bits/s for ABR. @command{oggenc} @option{-b} is
 +expressed in kilobits/s.
 +
 +@item q (@emph{-q})
 +Set constant quality setting for VBR. The value should be a float
 +number in the range of -1.0 to 10.0. The higher the value, the better
 +the quality. The default value is @samp{3.0}.
 +
 +This option is valid only using the @command{ffmpeg} command-line tool.
 +For library interface users, use @option{global_quality}.
 +
 +@item cutoff (@emph{--advanced-encode-option lowpass_frequency=N})
 +Set cutoff bandwidth in Hz, a value of 0 disables cutoff. @command{oggenc}'s
 +related option is expressed in kHz. The default value is @samp{0} (cutoff
 +disabled).
 +
 +@item minrate (@emph{-m})
 +Set minimum bitrate expressed in bits/s. @command{oggenc} @option{-m} is
 +expressed in kilobits/s.
 +
 +@item maxrate (@emph{-M})
 +Set maximum bitrate expressed in bits/s. @command{oggenc} @option{-M} is
 +expressed in kilobits/s. This only has effect on ABR mode.
 +
 +@item iblock (@emph{--advanced-encode-option impulse_noisetune=N})
 +Set noise floor bias for impulse blocks. The value is a float number from
 +-15.0 to 0.0. A negative bias instructs the encoder to pay special attention
 +to the crispness of transients in the encoded audio. The tradeoff for better
 +transient response is a higher bitrate.
 +
 +@end table
 +
 +@anchor{libwavpack}
 +@section libwavpack
 +
 +A wrapper providing WavPack encoding through libwavpack.
 +
 +Only lossless mode using 32-bit integer samples is supported currently.
 +
 +Requires the presence of the libwavpack headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libwavpack}.
 +
 +Note that a libavcodec-native encoder for the WavPack codec exists so users can
 +encode audios with this codec without using this encoder. See @ref{wavpackenc}.
 +
 +@subsection Options
 +
 +@command{wavpack} command line utility's corresponding options are listed in
 +parentheses, if any.
 +
 +@table @option
 +@item frame_size (@emph{--blocksize})
 +Default is 32768.
 +
 +@item compression_level
 +Set speed vs. compression tradeoff. Acceptable arguments are listed below:
 +
 +@table @samp
 +@item 0 (@emph{-f})
 +Fast mode.
 +
 +@item 1
 +Normal (default) settings.
 +
 +@item 2 (@emph{-h})
 +High quality.
 +
 +@item 3 (@emph{-hh})
 +Very high quality.
 +
 +@item 4-8 (@emph{-hh -x}@var{EXTRAPROC})
 +Same as @samp{3}, but with extra processing enabled.
 +
 +@samp{4} is the same as @option{-x2} and @samp{8} is the same as @option{-x6}.
 +
 +@end table
 +@end table
 +
 +@anchor{wavpackenc}
 +@section wavpack
 +
 +WavPack lossless audio encoder.
 +
 +This is a libavcodec-native WavPack encoder. There is also an encoder based on
 +libwavpack, but there is virtually no reason to use that encoder.
 +
 +See also @ref{libwavpack}.
 +
 +@subsection Options
 +
 +The equivalent options for @command{wavpack} command line utility are listed in
 +parentheses.
 +
 +@subsubsection Shared options
 +
 +The following shared options are effective for this encoder. Only special notes
 +about this particular encoder will be documented here. For the general meaning
 +of the options, see @ref{codec-options,,the Codec Options chapter}.
 +
 +@table @option
 +@item frame_size (@emph{--blocksize})
 +For this encoder, the range for this option is between 128 and 131072. Default
 +is automatically decided based on sample rate and number of channel.
 +
 +For the complete formula of calculating default, see
 +@file{libavcodec/wavpackenc.c}.
 +
 +@item compression_level (@emph{-f}, @emph{-h}, @emph{-hh}, and @emph{-x})
 +This option's syntax is consistent with @ref{libwavpack}'s.
 +@end table
 +
 +@subsubsection Private options
 +
 +@table @option
 +@item joint_stereo (@emph{-j})
 +Set whether to enable joint stereo. Valid values are:
 +
 +@table @samp
 +@item on (@emph{1})
 +Force mid/side audio encoding.
 +@item off (@emph{0})
 +Force left/right audio encoding.
 +@item auto
 +Let the encoder decide automatically.
 +@end table
 +
 +@item optimize_mono
 +Set whether to enable optimization for mono. This option is only effective for
 +non-mono streams. Available values:
 +
 +@table @samp
 +@item on
 +enabled
 +@item off
 +disabled
 +@end table
 +
 +@end table
 +
 +@c man end AUDIO ENCODERS
 +
 +@chapter Video Encoders
 +@c man begin VIDEO ENCODERS
 +
 +A description of some of the currently available video encoders
 +follows.
 +
 +@section libopenh264
 +
 +Cisco libopenh264 H.264/MPEG-4 AVC encoder wrapper.
 +
 +This encoder requires the presence of the libopenh264 headers and
 +library during configuration. You need to explicitly configure the
 +build with @code{--enable-libopenh264}. The library is detected using
 +@command{pkg-config}.
 +
 +For more information about the library see
 +@url{http://www.openh264.org}.
 +
 +@subsection Options
 +
 +The following FFmpeg global options affect the configurations of the
 +libopenh264 encoder.
 +
 +@table @option
 +@item b
 +Set the bitrate (as a number of bits per second).
 +
 +@item g
 +Set the GOP size.
 +
 +@item maxrate
 +Set the max bitrate (as a number of bits per second).
 +
 +@item flags +global_header
 +Set global header in the bitstream.
 +
 +@item slices
 +Set the number of slices, used in parallelized encoding. Default value
 +is 0. This is only used when @option{slice_mode} is set to
 +@samp{fixed}.
 +
 +@item slice_mode
 +Set slice mode. Can assume one of the follwing possible values:
 +
 +@table @samp
 +@item fixed
 +a fixed number of slices
 +@item rowmb
 +one slice per row of macroblocks
 +@item auto
 +automatic number of slices according to number of thread
 +@end table
 +
 +Default value is @samp{auto}.
 +
 +@item loopfilter
 +Enable loop filter, if set to 1 (automatically enabled). To disable
 +set a value of 0.
 +
 +@item profile
 +Set profile restrictions. If set to the value of @samp{main} enable
 +CABAC (set the @code{SEncParamExt.iEntropyCodingModeFlag} flag to 1).
 +@end table
 +
 +@section jpeg2000
 +
 +The native jpeg 2000 encoder is lossy by default, the @code{-q:v}
 +option can be used to set the encoding quality. Lossless encoding
 +can be selected with @code{-pred 1}.
 +
 +@subsection Options
 +
 +@table @option
 +@item format
 +Can be set to either @code{j2k} or @code{jp2} (the default) that
 +makes it possible to store non-rgb pix_fmts.
 +
 +@end table
 +
 +@section snow
 +
 +@subsection Options
 +
 +@table @option
 +@item iterative_dia_size
 +dia size for the iterative motion estimation
 +@end table
 +
 +@section libtheora
 +
 +libtheora Theora encoder wrapper.
 +
 +Requires the presence of the libtheora headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libtheora}.
 +
 +For more information about the libtheora project see
 +@url{http://www.theora.org/}.
 +
 +@subsection Options
 +
 +The following global options are mapped to internal libtheora options
 +which affect the quality and the bitrate of the encoded stream.
 +
 +@table @option
 +@item b
 +Set the video bitrate in bit/s for CBR (Constant Bit Rate) mode.  In
 +case VBR (Variable Bit Rate) mode is enabled this option is ignored.
 +
 +@item flags
 +Used to enable constant quality mode (VBR) encoding through the
 +@option{qscale} flag, and to enable the @code{pass1} and @code{pass2}
 +modes.
 +
 +@item g
 +Set the GOP size.
 +
 +@item global_quality
 +Set the global quality as an integer in lambda units.
 +
 +Only relevant when VBR mode is enabled with @code{flags +qscale}. The
 +value is converted to QP units by dividing it by @code{FF_QP2LAMBDA},
 +clipped in the [0 - 10] range, and then multiplied by 6.3 to get a
 +value in the native libtheora range [0-63]. A higher value corresponds
 +to a higher quality.
 +
 +@item q
 +Enable VBR mode when set to a non-negative value, and set constant
 +quality value as a double floating point value in QP units.
 +
 +The value is clipped in the [0-10] range, and then multiplied by 6.3
 +to get a value in the native libtheora range [0-63].
 +
 +This option is valid only using the @command{ffmpeg} command-line
 +tool. For library interface users, use @option{global_quality}.
 +@end table
 +
 +@subsection Examples
 +
 +@itemize
 +@item
 +Set maximum constant quality (VBR) encoding with @command{ffmpeg}:
 +@example
 +ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg
 +@end example
 +
 +@item
 +Use @command{ffmpeg} to convert a CBR 1000 kbps Theora video stream:
 +@example
 +ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg
 +@end example
 +@end itemize
 +
 +@section libvpx
 +
 +VP8/VP9 format supported through libvpx.
 +
 +Requires the presence of the libvpx headers and library during configuration.
 +You need to explicitly configure the build with @code{--enable-libvpx}.
 +
 +@subsection Options
 +
 +The following options are supported by the libvpx wrapper. The
 +@command{vpxenc}-equivalent options or values are listed in parentheses
 +for easy migration.
 +
 +To reduce the duplication of documentation, only the private options
 +and some others requiring special attention are documented here. For
 +the documentation of the undocumented generic options, see
 +@ref{codec-options,,the Codec Options chapter}.
 +
 +To get more documentation of the libvpx options, invoke the command
 +@command{ffmpeg -h encoder=libvpx}, @command{ffmpeg -h encoder=libvpx-vp9} or
 +@command{vpxenc --help}. Further information is available in the libvpx API
 +documentation.
 +
 +@table @option
 +
 +@item b (@emph{target-bitrate})
 +Set bitrate in bits/s. Note that FFmpeg's @option{b} option is
 +expressed in bits/s, while @command{vpxenc}'s @option{target-bitrate} is in
 +kilobits/s.
 +
 +@item g (@emph{kf-max-dist})
 +
 +@item keyint_min (@emph{kf-min-dist})
 +
 +@item qmin (@emph{min-q})
 +
 +@item qmax (@emph{max-q})
 +
 +@item bufsize (@emph{buf-sz}, @emph{buf-optimal-sz})
 +Set ratecontrol buffer size (in bits). Note @command{vpxenc}'s options are
 +specified in milliseconds, the libvpx wrapper converts this value as follows:
 +@code{buf-sz = bufsize * 1000 / bitrate},
 +@code{buf-optimal-sz = bufsize * 1000 / bitrate * 5 / 6}.
 +
 +@item rc_init_occupancy (@emph{buf-initial-sz})
 +Set number of bits which should be loaded into the rc buffer before decoding
 +starts. Note @command{vpxenc}'s option is specified in milliseconds, the libvpx
 +wrapper converts this value as follows:
 +@code{rc_init_occupancy * 1000 / bitrate}.
 +
 +@item undershoot-pct
 +Set datarate undershoot (min) percentage of the target bitrate.
 +
 +@item overshoot-pct
 +Set datarate overshoot (max) percentage of the target bitrate.
 +
 +@item skip_threshold (@emph{drop-frame})
 +
 +@item qcomp (@emph{bias-pct})
 +
 +@item maxrate (@emph{maxsection-pct})
 +Set GOP max bitrate in bits/s. Note @command{vpxenc}'s option is specified as a
 +percentage of the target bitrate, the libvpx wrapper converts this value as
 +follows: @code{(maxrate * 100 / bitrate)}.
 +
 +@item minrate (@emph{minsection-pct})
 +Set GOP min bitrate in bits/s. Note @command{vpxenc}'s option is specified as a
 +percentage of the target bitrate, the libvpx wrapper converts this value as
 +follows: @code{(minrate * 100 / bitrate)}.
 +
 +@item minrate, maxrate, b @emph{end-usage=cbr}
 +@code{(minrate == maxrate == bitrate)}.
 +
 +@item crf (@emph{end-usage=cq}, @emph{cq-level})
 +
 +@item quality, deadline (@emph{deadline})
 +@table @samp
 +@item best
 +Use best quality deadline. Poorly named and quite slow, this option should be
 +avoided as it may give worse quality output than good.
 +@item good
 +Use good quality deadline. This is a good trade-off between speed and quality
 +when used with the @option{cpu-used} option.
 +@item realtime
 +Use realtime quality deadline.
 +@end table
 +
 +@item speed, cpu-used (@emph{cpu-used})
 +Set quality/speed ratio modifier. Higher values speed up the encode at the cost
 +of quality.
 +
 +@item nr (@emph{noise-sensitivity})
 +
 +@item static-thresh
 +Set a change threshold on blocks below which they will be skipped by the
 +encoder.
 +
 +@item slices (@emph{token-parts})
 +Note that FFmpeg's @option{slices} option gives the total number of partitions,
 +while @command{vpxenc}'s @option{token-parts} is given as
 +@code{log2(partitions)}.
 +
 +@item max-intra-rate
 +Set maximum I-frame bitrate as a percentage of the target bitrate. A value of 0
 +means unlimited.
 +
 +@item force_key_frames
 +@code{VPX_EFLAG_FORCE_KF}
 +
 +@item Alternate reference frame related
 +@table @option
 +@item auto-alt-ref
 +Enable use of alternate reference frames (2-pass only).
 +@item arnr-max-frames
 +Set altref noise reduction max frame count.
 +@item arnr-type
 +Set altref noise reduction filter type: backward, forward, centered.
 +@item arnr-strength
 +Set altref noise reduction filter strength.
 +@item rc-lookahead, lag-in-frames (@emph{lag-in-frames})
 +Set number of frames to look ahead for frametype and ratecontrol.
 +@end table
 +
 +@item error-resilient
 +Enable error resiliency features.
 +
 +@item VP9-specific options
 +@table @option
 +@item lossless
 +Enable lossless mode.
 +@item tile-columns
 +Set number of tile columns to use. Note this is given as
 +@code{log2(tile_columns)}. For example, 8 tile columns would be requested by
 +setting the @option{tile-columns} option to 3.
 +@item tile-rows
 +Set number of tile rows to use. Note this is given as @code{log2(tile_rows)}.
 +For example, 4 tile rows would be requested by setting the @option{tile-rows}
 +option to 2.
 +@item frame-parallel
 +Enable frame parallel decodability features.
 +@item aq-mode
 +Set adaptive quantization mode (0: off (default), 1: variance 2: complexity, 3:
 +cyclic refresh).
 +@item colorspace @emph{color-space}
 +Set input color space. The VP9 bitstream supports signaling the following
 +colorspaces:
 +@table @option
 +@item @samp{rgb} @emph{sRGB}
 +@item @samp{bt709} @emph{bt709}
 +@item @samp{unspecified} @emph{unknown}
 +@item @samp{bt470bg} @emph{bt601}
 +@item @samp{smpte170m} @emph{smpte170}
 +@item @samp{smpte240m} @emph{smpte240}
 +@item @samp{bt2020_ncl} @emph{bt2020}
 +@end table
 +@end table
 +
 +@end table
 +
 +For more information about libvpx see:
 +@url{http://www.webmproject.org/}
 +
 +
 +@section libwebp
 +
 +libwebp WebP Image encoder wrapper
 +
 +libwebp is Google's official encoder for WebP images. It can encode in either
 +lossy or lossless mode. Lossy images are essentially a wrapper around a VP8
 +frame. Lossless images are a separate codec developed by Google.
 +
 +@subsection Pixel Format
 +
 +Currently, libwebp only supports YUV420 for lossy and RGB for lossless due
 +to limitations of the format and libwebp. Alpha is supported for either mode.
 +Because of API limitations, if RGB is passed in when encoding lossy or YUV is
 +passed in for encoding lossless, the pixel format will automatically be
 +converted using functions from libwebp. This is not ideal and is done only for
 +convenience.
 +
 +@subsection Options
 +
 +@table @option
 +
 +@item -lossless @var{boolean}
 +Enables/Disables use of lossless mode. Default is 0.
 +
 +@item -compression_level @var{integer}
 +For lossy, this is a quality/speed tradeoff. Higher values give better quality
 +for a given size at the cost of increased encoding time. For lossless, this is
 +a size/speed tradeoff. Higher values give smaller size at the cost of increased
 +encoding time. More specifically, it controls the number of extra algorithms
 +and compression tools used, and varies the combination of these tools. This
 +maps to the @var{method} option in libwebp. The valid range is 0 to 6.
 +Default is 4.
 +
 +@item -qscale @var{float}
 +For lossy encoding, this controls image quality, 0 to 100. For lossless
 +encoding, this controls the effort and time spent at compressing more. The
 +default value is 75. Note that for usage via libavcodec, this option is called
 +@var{global_quality} and must be multiplied by @var{FF_QP2LAMBDA}.
 +
 +@item -preset @var{type}
 +Configuration preset. This does some automatic settings based on the general
 +type of the image.
 +@table @option
 +@item none
 +Do not use a preset.
 +@item default
 +Use the encoder default.
 +@item picture
 +Digital picture, like portrait, inner shot
 +@item photo
 +Outdoor photograph, with natural lighting
 +@item drawing
 +Hand or line drawing, with high-contrast details
 +@item icon
 +Small-sized colorful images
 +@item text
 +Text-like
 +@end table
 +
 +@end table
 +
 +@section libx264, libx264rgb
 +
 +x264 H.264/MPEG-4 AVC encoder wrapper.
 +
 +This encoder requires the presence of the libx264 headers and library
 +during configuration. You need to explicitly configure the build with
 +@code{--enable-libx264}.
 +
 +libx264 supports an impressive number of features, including 8x8 and
 +4x4 adaptive spatial transform, adaptive B-frame placement, CAVLC/CABAC
 +entropy coding, interlacing (MBAFF), lossless mode, psy optimizations
 +for detail retention (adaptive quantization, psy-RD, psy-trellis).
 +
 +Many libx264 encoder options are mapped to FFmpeg global codec
 +options, while unique encoder options are provided through private
 +options. Additionally the @option{x264opts} and @option{x264-params}
 +private options allows one to pass a list of key=value tuples as accepted
 +by the libx264 @code{x264_param_parse} function.
 +
 +The x264 project website is at
 +@url{http://www.videolan.org/developers/x264.html}.
 +
 +The libx264rgb encoder is the same as libx264, except it accepts packed RGB
 +pixel formats as input instead of YUV.
 +
 +@subsection Supported Pixel Formats
 +
 +x264 supports 8- to 10-bit color spaces. The exact bit depth is controlled at
 +x264's configure time. FFmpeg only supports one bit depth in one particular
 +build. In other words, it is not possible to build one FFmpeg with multiple
 +versions of x264 with different bit depths.
 +
 +@subsection Options
 +
 +The following options are supported by the libx264 wrapper. The
 +@command{x264}-equivalent options or values are listed in parentheses
 +for easy migration.
 +
 +To reduce the duplication of documentation, only the private options
 +and some others requiring special attention are documented here. For
 +the documentation of the undocumented generic options, see
 +@ref{codec-options,,the Codec Options chapter}.
 +
 +To get a more accurate and extensive documentation of the libx264
 +options, invoke the command @command{x264 --full-help} or consult
 +the libx264 documentation.
 +
 +@table @option
 +@item b (@emph{bitrate})
 +Set bitrate in bits/s. Note that FFmpeg's @option{b} option is
 +expressed in bits/s, while @command{x264}'s @option{bitrate} is in
 +kilobits/s.
 +
 +@item bf (@emph{bframes})
 +
 +@item g (@emph{keyint})
 +
 +@item qmin (@emph{qpmin})
 +Minimum quantizer scale.
 +
 +@item qmax (@emph{qpmax})
 +Maximum quantizer scale.
 +
 +@item qdiff (@emph{qpstep})
 +Maximum difference between quantizer scales.
 +
 +@item qblur (@emph{qblur})
 +Quantizer curve blur
 +
 +@item qcomp (@emph{qcomp})
 +Quantizer curve compression factor
 +
 +@item refs (@emph{ref})
 +Number of reference frames each P-frame can use. The range is from @var{0-16}.
 +
 +@item sc_threshold (@emph{scenecut})
 +Sets the threshold for the scene change detection.
 +
 +@item trellis (@emph{trellis})
 +Performs Trellis quantization to increase efficiency. Enabled by default.
 +
 +@item nr  (@emph{nr})
 +
 +@item me_range (@emph{merange})
 +Maximum range of the motion search in pixels.
 +
 +@item me_method (@emph{me})
 +Set motion estimation method. Possible values in the decreasing order
 +of speed:
 +
 +@table @samp
 +@item dia (@emph{dia})
 +@item epzs (@emph{dia})
 +Diamond search with radius 1 (fastest). @samp{epzs} is an alias for
 +@samp{dia}.
 +@item hex (@emph{hex})
 +Hexagonal search with radius 2.
 +@item umh (@emph{umh})
 +Uneven multi-hexagon search.
 +@item esa (@emph{esa})
 +Exhaustive search.
 +@item tesa (@emph{tesa})
 +Hadamard exhaustive search (slowest).
 +@end table
 +
 +@item subq (@emph{subme})
 +Sub-pixel motion estimation method.
 +
 +@item b_strategy (@emph{b-adapt})
 +Adaptive B-frame placement decision algorithm. Use only on first-pass.
 +
 +@item keyint_min (@emph{min-keyint})
 +Minimum GOP size.
 +
 +@item coder
 +Set entropy encoder. Possible values:
 +
 +@table @samp
 +@item ac
 +Enable CABAC.
 +
 +@item vlc
 +Enable CAVLC and disable CABAC. It generates the same effect as
 +@command{x264}'s @option{--no-cabac} option.
 +@end table
 +
 +@item cmp
 +Set full pixel motion estimation comparation algorithm. Possible values:
 +
 +@table @samp
 +@item chroma
 +Enable chroma in motion estimation.
 +
 +@item sad
 +Ignore chroma in motion estimation. It generates the same effect as
 +@command{x264}'s @option{--no-chroma-me} option.
 +@end table
 +
 +@item threads (@emph{threads})
 +Number of encoding threads.
 +
 +@item thread_type
 +Set multithreading technique. Possible values:
 +
 +@table @samp
 +@item slice
 +Slice-based multithreading. It generates the same effect as
 +@command{x264}'s @option{--sliced-threads} option.
 +@item frame
 +Frame-based multithreading.
 +@end table
 +
 +@item flags
 +Set encoding flags. It can be used to disable closed GOP and enable
 +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})
 +
 +@item preset (@emph{preset})
 +Set the encoding preset.
 +
 +@item tune (@emph{tune})
 +Set tuning of the encoding params.
 +
 +@item profile (@emph{profile})
 +Set profile restrictions.
 +
 +@item fastfirstpass
 +Enable fast settings when encoding first pass, when set to 1. When set
 +to 0, it has the same effect of @command{x264}'s
 +@option{--slow-firstpass} option.
 +
 +@item crf (@emph{crf})
 +Set the quality for constant quality mode.
 +
 +@item crf_max (@emph{crf-max})
 +In CRF mode, prevents VBV from lowering quality beyond this point.
 +
 +@item qp (@emph{qp})
 +Set constant quantization rate control method parameter.
 +
 +@item aq-mode (@emph{aq-mode})
 +Set AQ method. Possible values:
 +
 +@table @samp
 +@item none (@emph{0})
 +Disabled.
 +
 +@item variance (@emph{1})
 +Variance AQ (complexity mask).
 +
 +@item autovariance (@emph{2})
 +Auto-variance AQ (experimental).
 +@end table
 +
 +@item aq-strength (@emph{aq-strength})
 +Set AQ strength, reduce blocking and blurring in flat and textured areas.
 +
 +@item psy
 +Use psychovisual optimizations when set to 1. When set to 0, it has the
 +same effect as @command{x264}'s @option{--no-psy} option.
 +
 +@item psy-rd  (@emph{psy-rd})
 +Set strength of psychovisual optimization, in
 +@var{psy-rd}:@var{psy-trellis} format.
 +
 +@item rc-lookahead (@emph{rc-lookahead})
 +Set number of frames to look ahead for frametype and ratecontrol.
 +
 +@item weightb
 +Enable weighted prediction for B-frames when set to 1. When set to 0,
 +it has the same effect as @command{x264}'s @option{--no-weightb} option.
 +
 +@item weightp (@emph{weightp})
 +Set weighted prediction method for P-frames. Possible values:
 +
 +@table @samp
 +@item none (@emph{0})
 +Disabled
 +@item simple (@emph{1})
 +Enable only weighted refs
 +@item smart (@emph{2})
 +Enable both weighted refs and duplicates
 +@end table
 +
 +@item ssim (@emph{ssim})
 +Enable calculation and printing SSIM stats after the encoding.
 +
 +@item intra-refresh (@emph{intra-refresh})
 +Enable the use of Periodic Intra Refresh instead of IDR frames when set
 +to 1.
 +
 +@item avcintra-class (@emph{class})
 +Configure the encoder to generate AVC-Intra.
 +Valid values are 50,100 and 200
 +
 +@item bluray-compat (@emph{bluray-compat})
 +Configure the encoder to be compatible with the bluray standard.
 +It is a shorthand for setting "bluray-compat=1 force-cfr=1".
 +
 +@item b-bias (@emph{b-bias})
 +Set the influence on how often B-frames are used.
 +
 +@item b-pyramid (@emph{b-pyramid})
 +Set method for keeping of some B-frames as references. Possible values:
 +
 +@table @samp
 +@item none (@emph{none})
 +Disabled.
 +@item strict (@emph{strict})
 +Strictly hierarchical pyramid.
 +@item normal (@emph{normal})
 +Non-strict (not Blu-ray compatible).
 +@end table
 +
 +@item mixed-refs
 +Enable the use of one reference per partition, as opposed to one
 +reference per macroblock when set to 1. When set to 0, it has the
 +same effect as @command{x264}'s @option{--no-mixed-refs} option.
 +
 +@item 8x8dct
 +Enable adaptive spatial transform (high profile 8x8 transform)
 +when set to 1. When set to 0, it has the same effect as
 +@command{x264}'s @option{--no-8x8dct} option.
 +
 +@item fast-pskip
 +Enable early SKIP detection on P-frames when set to 1. When set
 +to 0, it has the same effect as @command{x264}'s
 +@option{--no-fast-pskip} option.
 +
 +@item aud (@emph{aud})
 +Enable use of access unit delimiters when set to 1.
 +
 +@item mbtree
 +Enable use macroblock tree ratecontrol when set to 1. When set
 +to 0, it has the same effect as @command{x264}'s
 +@option{--no-mbtree} option.
 +
 +@item deblock (@emph{deblock})
 +Set loop filter parameters, in @var{alpha}:@var{beta} form.
 +
 +@item cplxblur (@emph{cplxblur})
 +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:
 +
 +@table @samp
 +@item p8x8
 +8x8 P-frame partition.
 +@item p4x4
 +4x4 P-frame partition.
 +@item b8x8
 +4x4 B-frame partition.
 +@item i8x8
 +8x8 I-frame partition.
 +@item i4x4
 +4x4 I-frame partition.
 +(Enabling @samp{p4x4} requires @samp{p8x8} to be enabled. Enabling
 +@samp{i8x8} requires adaptive spatial transform (@option{8x8dct}
 +option) to be enabled.)
 +@item none (@emph{none})
 +Do not consider any partitions.
 +@item all (@emph{all})
 +Consider every partition.
 +@end table
 +
 +@item direct-pred (@emph{direct})
 +Set direct MV prediction mode. Possible values:
 +
 +@table @samp
 +@item none (@emph{none})
 +Disable MV prediction.
 +@item spatial (@emph{spatial})
 +Enable spatial predicting.
 +@item temporal (@emph{temporal})
 +Enable temporal predicting.
 +@item auto (@emph{auto})
 +Automatically decided.
 +@end table
 +
 +@item slice-max-size (@emph{slice-max-size})
 +Set the limit of the size of each slice in bytes. If not specified
 +but RTP payload size (@option{ps}) is specified, that is used.
 +
 +@item stats (@emph{stats})
 +Set the file name for multi-pass stats.
 +
 +@item nal-hrd (@emph{nal-hrd})
 +Set signal HRD information (requires @option{vbv-bufsize} to be set).
 +Possible values:
 +
 +@table @samp
 +@item none (@emph{none})
 +Disable HRD information signaling.
 +@item vbr (@emph{vbr})
 +Variable bit rate.
 +@item cbr (@emph{cbr})
 +Constant bit rate (not allowed in MP4 container).
 +@end table
 +
 +@item x264opts (N.A.)
 +Set any x264 option, see @command{x264 --fullhelp} for a list.
 +
 +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.
 +
 +For example to specify libx264 encoding options with @command{ffmpeg}:
 +@example
 +ffmpeg -i foo.mpg -vcodec libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
 +@end example
 +
 +@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 0 (off).
 +
 +@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}:
 +@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
 +@end example
 +@end table
 +
 +Encoding ffpresets for common usages are provided so they can be used with the
 +general presets system (e.g. passing the @option{pre} option).
 +
 +@section libx265
 +
 +x265 H.265/HEVC encoder wrapper.
 +
 +This encoder requires the presence of the libx265 headers and library
 +during configuration. You need to explicitly configure the build with
 +@option{--enable-libx265}.
 +
 +@subsection Options
 +
 +@table @option
 +@item preset
 +Set the x265 preset.
 +
 +@item tune
 +Set the x265 tune parameter.
 +
 +@item x265-params
 +Set x265 options using a list of @var{key}=@var{value} couples separated
 +by ":". See @command{x265 --help} for a list of options.
 +
 +For example to specify libx265 encoding options with @option{-x265-params}:
 +
 +@example
 +ffmpeg -i input -c:v libx265 -x265-params crf=26:psy-rd=1 output.mp4
 +@end example
 +@end table
 +
 +@section libxvid
 +
 +Xvid MPEG-4 Part 2 encoder wrapper.
 +
 +This encoder requires the presence of the libxvidcore headers and library
 +during configuration. You need to explicitly configure the build with
 +@code{--enable-libxvid --enable-gpl}.
 +
 +The native @code{mpeg4} encoder supports the MPEG-4 Part 2 format, so
 +users can encode to this format without this library.
 +
 +@subsection Options
 +
 +The following options are supported by the libxvid wrapper. Some of
 +the following options are listed but are not documented, and
 +correspond to shared codec options. See @ref{codec-options,,the Codec
 +Options chapter} for their documentation. The other shared options
 +which are not listed have no effect for the libxvid encoder.
 +
 +@table @option
 +@item b
 +
 +@item g
 +
 +@item qmin
 +
 +@item qmax
 +
 +@item mpeg_quant
 +
 +@item threads
 +
 +@item bf
 +
 +@item b_qfactor
 +
 +@item b_qoffset
 +
 +@item flags
 +Set specific encoding flags. Possible values:
 +
 +@table @samp
 +
 +@item mv4
 +Use four motion vector by macroblock.
 +
 +@item aic
 +Enable high quality AC prediction.
 +
 +@item gray
 +Only encode grayscale.
 +
 +@item gmc
 +Enable the use of global motion compensation (GMC).
 +
 +@item qpel
 +Enable quarter-pixel motion compensation.
 +
 +@item cgop
 +Enable closed GOP.
 +
 +@item global_header
 +Place global headers in extradata instead of every keyframe.
 +
 +@end table
 +
 +@item trellis
 +
 +@item me_method
 +Set motion estimation method. Possible values in decreasing order of
 +speed and increasing order of quality:
 +
 +@table @samp
 +@item zero
 +Use no motion estimation (default).
 +
 +@item phods
 +@item x1
 +@item log
 +Enable advanced diamond zonal search for 16x16 blocks and half-pixel
 +refinement for 16x16 blocks. @samp{x1} and @samp{log} are aliases for
 +@samp{phods}.
 +
 +@item epzs
 +Enable all of the things described above, plus advanced diamond zonal
 +search for 8x8 blocks, half-pixel refinement for 8x8 blocks, and motion
 +estimation on chroma planes.
 +
 +@item full
 +Enable all of the things described above, plus extended 16x16 and 8x8
 +blocks search.
 +@end table
 +
 +@item mbd
 +Set macroblock decision algorithm. Possible values in the increasing
 +order of quality:
 +
 +@table @samp
 +@item simple
 +Use macroblock comparing function algorithm (default).
 +
 +@item bits
 +Enable rate distortion-based half pixel and quarter pixel refinement for
 +16x16 blocks.
 +
 +@item rd
 +Enable all of the things described above, plus rate distortion-based
 +half pixel and quarter pixel refinement for 8x8 blocks, and rate
 +distortion-based search using square pattern.
 +@end table
 +
 +@item lumi_aq
 +Enable lumi masking adaptive quantization when set to 1. Default is 0
 +(disabled).
 +
 +@item variance_aq
 +Enable variance adaptive quantization when set to 1. Default is 0
 +(disabled).
 +
 +When combined with @option{lumi_aq}, the resulting quality will not
 +be better than any of the two specified individually. In other
 +words, the resulting quality will be the worse one of the two
 +effects.
 +
 +@item ssim
 +Set structural similarity (SSIM) displaying method. Possible values:
 +
 +@table @samp
 +@item off
 +Disable displaying of SSIM information.
 +
 +@item avg
 +Output average SSIM at the end of encoding to stdout. The format of
 +showing the average SSIM is:
 +
 +@example
 +Average SSIM: %f
 +@end example
 +
 +For users who are not familiar with C, %f means a float number, or
 +a decimal (e.g. 0.939232).
 +
 +@item frame
 +Output both per-frame SSIM data during encoding and average SSIM at
 +the end of encoding to stdout. The format of per-frame information
 +is:
 +
 +@example
 +       SSIM: avg: %1.3f min: %1.3f max: %1.3f
 +@end example
 +
 +For users who are not familiar with C, %1.3f means a float number
 +rounded to 3 digits after the dot (e.g. 0.932).
 +
 +@end table
 +
 +@item ssim_acc
 +Set SSIM accuracy. Valid options are integers within the range of
 +0-4, while 0 gives the most accurate result and 4 computes the
 +fastest.
 +
 +@end table
 +
 +@section mpeg2
 +
 +MPEG-2 video encoder.
 +
 +@subsection Options
 +
 +@table @option
 +@item seq_disp_ext @var{integer}
 +Specifies if the encoder should write a sequence_display_extension to the
 +output.
 +@table @option
 +@item -1
 +@itemx auto
 +Decide automatically to write it or not (this is the default) by checking if
 +the data to be written is different from the default or unspecified values.
 +@item 0
 +@itemx never
 +Never write it.
 +@item 1
 +@itemx always
 +Always write it.
 +@end table
 +@end table
 +
 +@section png
 +
 +PNG image encoder.
 +
 +@subsection Private options
 +
 +@table @option
 +@item dpi @var{integer}
 +Set physical density of pixels, in dots per inch, unset by default
 +@item dpm @var{integer}
 +Set physical density of pixels, in dots per meter, unset by default
 +@end table
 +
 +@section ProRes
 +
 +Apple ProRes encoder.
 +
 +FFmpeg contains 2 ProRes encoders, the prores-aw and prores-ks encoder.
 +The used encoder can be chosen with the @code{-vcodec} option.
 +
 +@subsection Private Options for prores-ks
 +
 +@table @option
 +@item profile @var{integer}
 +Select the ProRes profile to encode
 +@table @samp
 +@item proxy
 +@item lt
 +@item standard
 +@item hq
 +@item 4444
 +@end table
 +
 +@item quant_mat @var{integer}
 +Select quantization matrix.
 +@table @samp
 +@item auto
 +@item default
 +@item proxy
 +@item lt
 +@item standard
 +@item hq
 +@end table
 +If set to @var{auto}, the matrix matching the profile will be picked.
 +If not set, the matrix providing the highest quality, @var{default}, will be
 +picked.
 +
 +@item bits_per_mb @var{integer}
 +How many bits to allot for coding one macroblock. Different profiles use
 +between 200 and 2400 bits per macroblock, the maximum is 8000.
 +
 +@item mbs_per_slice @var{integer}
 +Number of macroblocks in each slice (1-8); the default value (8)
 +should be good in almost all situations.
 +
 +@item vendor @var{string}
 +Override the 4-byte vendor ID.
 +A custom vendor ID like @var{apl0} would claim the stream was produced by
 +the Apple encoder.
 +
 +@item alpha_bits @var{integer}
 +Specify number of bits for alpha component.
 +Possible values are @var{0}, @var{8} and @var{16}.
 +Use @var{0} to disable alpha plane coding.
 +
 +@end table
 +
 +@subsection Speed considerations
 +
 +In the default mode of operation the encoder has to honor frame constraints
 +(i.e. not produce frames with size bigger than requested) while still making
 +output picture as good as possible.
 +A frame containing a lot of small details is harder to compress and the encoder
 +would spend more time searching for appropriate quantizers for each slice.
 +
 +Setting a higher @option{bits_per_mb} limit will improve the speed.
 +
 +For the fastest encoding speed set the @option{qscale} parameter (4 is the
 +recommended value) and do not set a size constraint.
 +
 +@section libkvazaar
 +
 +Kvazaar H.265/HEVC encoder.
 +
 +Requires the presence of the libkvazaar headers and library during
 +configuration. You need to explicitly configure the build with
 +@option{--enable-libkvazaar}.
 +
 +@subsection Options
 +
 +@table @option
 +
 +@item b
 +Set target video bitrate in bit/s and enable rate control.
 +
 +@item kvazaar-params
 +Set kvazaar parameters as a list of @var{name}=@var{value} pairs separated
 +by commas (,). See kvazaar documentation for a list of options.
 +
 +@end table
 +
++@section QSV encoders
++
++The family of Intel QuickSync Video encoders (MPEG-2, H.264 and HEVC)
+ The ratecontrol method is selected as follows:
+ @itemize @bullet
+ @item
+ When @option{global_quality} is specified, a quality-based mode is used.
+ Specifically this means either
+ @itemize @minus
+ @item
+ @var{CQP} - constant quantizer scale, when the @option{qscale} codec flag is
+ also set (the @option{-qscale} avconv option).
+ @item
+ @var{LA_ICQ} - intelligent constant quality with lookahead, when the
 -@option{la_depth} option is also set.
++@option{look_ahead} option is also set.
+ @item
+ @var{ICQ} -- intelligent constant quality otherwise.
+ @end itemize
+ @item
+ Otherwise, a bitrate-based mode is used. For all of those, you should specify at
+ least the desired average bitrate with the @option{b} option.
+ @itemize @minus
+ @item
 -@var{LA} - VBR with lookahead, when the @option{la_depth} option is specified.
++@var{LA} - VBR with lookahead, when the @option{look_ahead} option is specified.
+ @item
+ @var{VCM} - video conferencing mode, when the @option{vcm} option is set.
+ @item
+ @var{CBR} - constant bitrate, when @option{maxrate} is specified and equal to
+ the average bitrate.
+ @item
+ @var{VBR} - variable bitrate, when @option{maxrate} is specified, but is higher
+ than the average bitrate.
+ @item
+ @var{AVBR} - average VBR mode, when @option{maxrate} is not specified. This mode
+ is further configured by the @option{avbr_accuracy} and
+ @option{avbr_convergence} options.
+ @end itemize
+ @end itemize
+ Note that depending on your system, a different mode than the one you specified
+ may be selected by the encoder. Set the verbosity level to @var{verbose} or
+ higher to see the actual settings used by the QSV runtime.
+ Additional libavcodec global options are mapped to MSDK options as follows:
+ @itemize
+ @item
+ @option{g/gop_size} -> @option{GopPicSize}
+ @item
+ @option{bf/max_b_frames}+1 -> @option{GopRefDist}
+ @item
+ @option{rc_init_occupancy/rc_initial_buffer_occupancy} ->
+ @option{InitialDelayInKB}
+ @item
+ @option{slices} -> @option{NumSlice}
+ @item
+ @option{refs} -> @option{NumRefFrame}
+ @item
+ @option{b_strategy/b_frame_strategy} -> @option{BRefType}
+ @item
+ @option{cgop/CLOSED_GOP} codec flag -> @option{GopOptFlag}
+ @item
+ For the @var{CQP} mode, the @option{i_qfactor/i_qoffset} and
+ @option{b_qfactor/b_qoffset} set the difference between @var{QPP} and @var{QPI},
+ and @var{QPP} and @var{QPB} respectively.
+ @item
+ Setting the @option{coder} option to the value @var{vlc} will make the H.264
+ encoder use CAVLC instead of CABAC.
+ @end itemize
  @c man end VIDEO ENCODERS
 +
 +@chapter Subtitles Encoders
 +@c man begin SUBTITLES ENCODERS
 +
 +@section dvdsub
 +
 +This codec encodes the bitmap subtitle format that is used in DVDs.
 +Typically they are stored in VOBSUB file pairs (*.idx + *.sub),
 +and they can also be used in Matroska files.
 +
 +@subsection Options
 +
 +@table @option
 +@item even_rows_fix
 +When set to 1, enable a work-around that makes the number of pixel rows
 +even in all subtitles.  This fixes a problem with some players that
 +cut off the bottom row if the number is odd.  The work-around just adds
 +a fully transparent row if needed.  The overhead is low, typically
 +one byte per subtitle on average.
 +
 +By default, this work-around is disabled.
 +@end table
 +
 +@c man end SUBTITLES ENCODERS