Merge commit 'bc54c2ae3ca6abd225dc331eafc12108513158de'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 6 Aug 2013 13:26:04 +0000 (15:26 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 6 Aug 2013 13:26:04 +0000 (15:26 +0200)
* commit 'bc54c2ae3ca6abd225dc331eafc12108513158de':
  libx264: add shortcut for the bluray compatibility option

Conflicts:
doc/encoders.texi

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
doc/encoders.texi
libavcodec/libx264.c

@@@ -707,686 -446,185 +707,690 @@@ Same as 3, but with extra processing en
  @chapter Video Encoders
  @c man begin VIDEO ENCODERS
  
 +A description of some of the currently available video encoders
 +follows.
 +
 +@section libtheora
 +
 +Theora format supported through libtheora.
 +
 +Requires the presence of the libtheora headers and library during
 +configuration. You need to explicitly configure the build with
 +@code{--enable-libtheora}.
 +
 +@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, only works if the @code{qscale} flag in
 +@option{flags} is not enabled.
 +
 +@item flags
 +Used to enable constant quality mode 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 in lambda units, only works if the
 +@code{qscale} flag in @option{flags} is enabled. The value is clipped
 +in the [0 - 10*@code{FF_QP2LAMBDA}] range, and then multiplied for 6.3
 +to get a value in the native libtheora range [0-63]. A higher value
 +corresponds to a higher quality.
 +
 +For example, to set maximum constant quality encoding with
 +@command{ffmpeg}:
 +@example
 +ffmpeg -i INPUT -flags:v qscale -global_quality:v "10*QP2LAMBDA" -codec:v libtheora OUTPUT.ogg
 +@end example
 +@end table
 +
 +@section libvpx
 +
 +VP8 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
 +
 +Mapping from FFmpeg to libvpx options with conversion notes in parentheses.
 +
 +@table @option
 +
 +@item threads
 +g_threads
 +
 +@item profile
 +g_profile
 +
 +@item vb
 +rc_target_bitrate
 +
 +@item g
 +kf_max_dist
 +
 +@item keyint_min
 +kf_min_dist
 +
 +@item qmin
 +rc_min_quantizer
 +
 +@item qmax
 +rc_max_quantizer
 +
 +@item bufsize, vb
 +rc_buf_sz
 +@code{(bufsize * 1000 / vb)}
 +
 +rc_buf_optimal_sz
 +@code{(bufsize * 1000 / vb * 5 / 6)}
 +
 +@item rc_init_occupancy, vb
 +rc_buf_initial_sz
 +@code{(rc_init_occupancy * 1000 / vb)}
 +
 +@item rc_buffer_aggressivity
 +rc_undershoot_pct
 +
 +@item skip_threshold
 +rc_dropframe_thresh
 +
 +@item qcomp
 +rc_2pass_vbr_bias_pct
 +
 +@item maxrate, vb
 +rc_2pass_vbr_maxsection_pct
 +@code{(maxrate * 100 / vb)}
 +
 +@item minrate, vb
 +rc_2pass_vbr_minsection_pct
 +@code{(minrate * 100 / vb)}
 +
 +@item minrate, maxrate, vb
 +@code{VPX_CBR}
 +@code{(minrate == maxrate == vb)}
 +
 +@item crf
 +@code{VPX_CQ}, @code{VP8E_SET_CQ_LEVEL}
 +
 +@item quality
 +@table @option
 +@item @var{best}
 +@code{VPX_DL_BEST_QUALITY}
 +@item @var{good}
 +@code{VPX_DL_GOOD_QUALITY}
 +@item @var{realtime}
 +@code{VPX_DL_REALTIME}
 +@end table
 +
 +@item speed
 +@code{VP8E_SET_CPUUSED}
 +
 +@item nr
 +@code{VP8E_SET_NOISE_SENSITIVITY}
 +
 +@item mb_threshold
 +@code{VP8E_SET_STATIC_THRESHOLD}
 +
 +@item slices
 +@code{VP8E_SET_TOKEN_PARTITIONS}
 +
 +@item max-intra-rate
 +@code{VP8E_SET_MAX_INTRA_BITRATE_PCT}
 +
 +@item force_key_frames
 +@code{VPX_EFLAG_FORCE_KF}
 +
 +@item Alternate reference frame related
 +@table @option
 +@item vp8flags altref
 +@code{VP8E_SET_ENABLEAUTOALTREF}
 +@item @var{arnr_max_frames}
 +@code{VP8E_SET_ARNR_MAXFRAMES}
 +@item @var{arnr_type}
 +@code{VP8E_SET_ARNR_TYPE}
 +@item @var{arnr_strength}
 +@code{VP8E_SET_ARNR_STRENGTH}
 +@item @var{rc_lookahead}
 +g_lag_in_frames
 +@end table
 +
 +@item vp8flags error_resilient
 +g_error_resilient
 +
 +@end table
 +
 +For more information about libvpx see:
 +@url{http://www.webmproject.org/}
 +
  @section libx264
  
 -x264 H.264/MPEG-4 AVC encoder wrapper
 +x264 H.264/MPEG-4 AVC encoder wrapper.
  
 -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).
 +This encoder requires the presence of the libx264 headers and library
 +during configuration. You need to explicitly configure the build with
 +@code{--enable-libx264}.
  
 -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.
 +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).
  
 -@subsection Option Mapping
 +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 to pass a list of key=value tuples as accepted
 +by the libx264 @code{x264_param_parse} function.
  
 -The following options are supported by the x264 wrapper, the x264-equivalent
 -options follow the Libav ones.
 +The x264 project website is at
 +@url{http://www.videolan.org/developers/x264.html}.
  
 -@multitable @columnfractions .2 .2
 -@item b                 @tab bitrate
 -Libav @code{b} option is expressed in bits/s, x264 @code{bitrate} in kilobits/s.
 -@item bf                @tab bframes
 -Maximum number of B-frames.
 -@item g                 @tab keyint
 -Maximum GOP size.
 -@item qmin              @tab qpmin
 -@item qmax              @tab qpmax
 -@item qdiff             @tab qpstep
 -@item qblur             @tab qblur
 -@item qcomp             @tab qcomp
 -@item refs              @tab ref
 -@item sc_threshold      @tab scenecut
 -@item trellis           @tab trellis
 -@item nr                @tab nr
 -Noise reduction.
 -@item me_range          @tab merange
 -@item me_method         @tab me
 -@item subq              @tab subme
 -@item b_strategy        @tab b-adapt
 -@item keyint_min        @tab keyint-min
 -@item coder             @tab cabac
 -Set coder to @code{ac} to use CABAC.
 -@item cmp               @tab chroma-me
 -Set to @code{chroma} to use chroma motion estimation.
 -@item threads           @tab threads
 -@item thread_type       @tab sliced_threads
 -Set to @code{slice} to use sliced threading instead of frame threading.
 -@item flags -cgop       @tab open-gop
 -Set @code{-cgop} to use recovery points to close GOPs.
 -@item rc_init_occupancy @tab vbv-init
 -Initial buffer occupancy.
 -@end multitable
 +@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}.
  
 -@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}
 +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 qmax (@emph{qpmax})
 +
 +@item qmin (@emph{qpmin})
 +
 +@item qdiff (@emph{qpstep})
 +
 +@item qblur (@emph{qblur})
 +
 +@item qcomp (@emph{qcomp})
 +
 +@item refs (@emph{ref})
 +
 +@item sc_threshold (@emph{scenecut})
 +
 +@item trellis (@emph{trellis})
 +
 +@item nr  (@emph{nr})
 +
 +@item me_range (@emph{merange})
 +
 +@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})
 +
 +@item b_strategy (@emph{b-adapt})
 +
 +@item keyint_min (@emph{min-keyint})
 +
 +@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})
 +
 +@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 @var{integer}
 -Constant quantization parameter rate control method.
 -@item -aq-mode @var{integer}
 -AQ method
  
 -Possible values:
 +@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
 +@item none (@emph{0})
 +Disabled.
  
 -@item variance
 +@item variance (@emph{1})
  Variance AQ (complexity mask).
 -@item autovariance
 +
 +@item autovariance (@emph{2})
  Auto-variance AQ (experimental).
  @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
 +@item aq-strength (@emph{aq-strength})
 +Set AQ strength, reduce blocking and blurring in flat and textured areas.
  
 -@item simple
 +@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 smart
 +@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 @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}
 +
 +@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 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 @var{integer}
 -Influences how often B-frames are used.
 -@item -b-pyramid @var{integer}
 -Keep some B-frames as references.
 -Possible values:
 -@table @samp
 -@item none
 +@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:
  
 -@item strict
 +@table @samp
 +@item none (@emph{none})
 +Disabled.
 +@item strict (@emph{strict})
  Strictly hierarchical pyramid.
 -@item normal
 +@item normal (@emph{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
  
 +@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
 +@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 spatial
 +@item x264opts (N.A.)
 +Set any x264 option, see @command{x264 --fullhelp} for a list.
  
 -@item temporal
 +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.
  
 -@item auto
 +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 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 compability 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
 -@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).
  
 -Possible values:
 +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 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 none
 +@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 vbr
 +@item mbd
 +Set macroblock decision algorithm. Possible values in the increasing
 +order of quality:
  
 -@item cbr
 +@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 -x264-params @var{string}
 -Override the x264 configuration using a :-separated list of key=value parameters.
 +
 +@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
 --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
 +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
  
 -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 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 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
  
Simple merge