X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=doc%2Fencoders.texi;h=2ba9938da2a26366cec6d857c2a39cbb7bb258b0;hb=d40bb518b50561db60ef71ab0e37eb7f3fb9043b;hp=e86ae69cc595458136c3f3f5cc11cf3341eea81c;hpb=f32d2939555706365ad1d39aadd5ee7ce1d9fa4f;p=ffmpeg diff --git a/doc/encoders.texi b/doc/encoders.texi index e86ae69cc59..2ba9938da2a 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -30,11 +30,7 @@ follows. Advanced Audio Coding (AAC) encoder. -This encoder is the default AAC encoder, natively implemented into FFmpeg. Its -quality is on par or better than libfdk_aac at the default bitrate of 128kbps. -This encoder also implements more options, profiles and samplerates than -other encoders (with only the AAC-HE profile pending to be implemented) so this -encoder has become the default and is the recommended choice. +This encoder is the default AAC encoder, natively implemented into FFmpeg. @subsection Options @@ -155,10 +151,9 @@ the undocumented RealAudio 3 (a.k.a. dnet). The @var{ac3} encoder uses floating-point math, while the @var{ac3_fixed} encoder only uses fixed-point integer math. This does not mean that one is always faster, just that one or the other may be better suited to a -particular system. The floating-point encoder will generally produce better -quality audio for a given bitrate. The @var{ac3_fixed} encoder is not the -default codec for any of the output formats, so it must be specified explicitly -using the option @code{-acodec ac3_fixed} in order to use it. +particular system. The @var{ac3_fixed} encoder is not the default codec for +any of the output formats, so it must be specified explicitly using the option +@code{-acodec ac3_fixed} in order to use it. @subsection AC-3 Metadata @@ -651,10 +646,7 @@ configuration. You need to explicitly configure the build with so if you allow the use of GPL, you should configure with @code{--enable-gpl --enable-nonfree --enable-libfdk-aac}. -This encoder is considered to produce output on par or worse at 128kbps to the -@ref{aacenc,,the native FFmpeg AAC encoder} but can often produce better -sounding audio at identical or lower bitrates and has support for the -AAC-HE profiles. +This encoder has support for the AAC-HE profiles. VBR encoding, enabled through the @option{vbr} or @option{flags +qscale} options, is experimental and only works with some @@ -733,6 +725,14 @@ if set to 0. Default value is 0. +@item eld_v2 +Enable ELDv2 (LD-MPS extension for ELD stereo signals) for ELDv2 if set to 1, +disabled if set to 0. + +Note that option is available when fdk-aac version (AACENCODER_LIB_VL0.AACENCODER_LIB_VL1.AACENCODER_LIB_VL2) > (4.0.0). + +Default value is 0. + @item signaling Set SBR/PS signaling style. @@ -952,6 +952,11 @@ The default is 20ms. @item packet_loss (@emph{expect-loss}) Set expected packet loss percentage. The default is 0. +@item fec (@emph{n/a}) +Enable inband forward error correction. @option{packet_loss} must be non-zero +to take advantage - frequency of FEC 'side-data' is proportional to expected packet loss. +Default is disabled. + @item application (N.A.) Set intended application type. Valid options are listed below: @@ -1179,53 +1184,6 @@ 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{mjpegenc} @section mjpeg @@ -1252,11 +1210,6 @@ Compute and use optimal huffman tables. 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 @@ -1277,7 +1230,6 @@ 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 @@ -1316,6 +1268,48 @@ disabled A description of some of the currently available video encoders follows. +@section a64_multi, a64_multi5 + +A64 / Commodore 64 multicolor charset encoder. @code{a64_multi5} is extended with 5th color (colram). + +@section GIF + +GIF image/animation encoder. + +@subsection Options + +@table @option +@item gifflags @var{integer} +Sets the flags used for GIF encoding. + +@table @option +@item offsetting +Enables picture offsetting. + +Default is enabled. + +@item transdiff +Enables transparency detection between frames. + +Default is enabled. + +@end table + +@item gifimage @var{integer} +Enables encoding one full GIF image per frame, rather than an animated GIF. + +Default value is @option{0}. + +@item global_palette @var{integer} +Writes a palette to the global GIF header where feasible. + +If disabled, every frame will always have a palette written, even if there +is a global palette supplied. + +Default value is @option{1}. + +@end table + @section Hap Vidvox Hap video encoder. @@ -1364,10 +1358,101 @@ can be selected with @code{-pred 1}. @subsection Options @table @option -@item format +@item format @var{integer} Can be set to either @code{j2k} or @code{jp2} (the default) that makes it possible to store non-rgb pix_fmts. +@item tile_width @var{integer} +Sets tile width. Range is 1 to 1073741824. Default is 256. + +@item tile_height @var{integer} +Sets tile height. Range is 1 to 1073741824. Default is 256. + +@item pred @var{integer} +Allows setting the discrete wavelet transform (DWT) type +@table @option +@item dwt97int (Lossy) +@item dwt53 (Lossless) +@end table +Default is @code{dwt97int} + +@item sop @var{boolean} +Enable this to add SOP marker at the start of each packet. Disabled by default. + +@item eph @var{boolean} +Enable this to add EPH marker at the end of each packet header. Disabled by default. + +@item prog @var{integer} +Sets the progression order to be used by the encoder. +Possible values are: +@table @option +@item lrcp +@item rlcp +@item rpcl +@item pcrl +@item cprl +@end table +Set to @code{lrcp} by default. + +@item layer_rates @var{string} +By default, when this option is not used, compression is done using the quality metric. +This option allows for compression using compression ratio. The compression ratio for each +level could be specified. The compression ratio of a layer @code{l} species the what ratio of +total file size is contained in the first @code{l} layers. + +Example usage: + +@example +ffmpeg -i input.bmp -c:v jpeg2000 -layer_rates "100,10,1" output.j2k +@end example + +This would compress the image to contain 3 layers, where the data contained in the +first layer would be compressed by 1000 times, compressed by 100 in the first two layers, +and shall contain all data while using all 3 layers. + +@end table + +@section librav1e + +rav1e AV1 encoder wrapper. + +Requires the presence of the rav1e headers and library during configuration. +You need to explicitly configure the build with @code{--enable-librav1e}. + +@subsection Options + +@table @option +@item qmax +Sets the maximum quantizer to use when using bitrate mode. + +@item qmin +Sets the minimum quantizer to use when using bitrate mode. + +@item qp +Uses quantizer mode to encode at the given quantizer (0-255). + +@item speed +Selects the speed preset (0-10) to encode with. + +@item tiles +Selects how many tiles to encode with. + +@item tile-rows +Selects how many rows of tiles to encode with. + +@item tile-columns +Selects how many columns of tiles to encode with. + +@item rav1e-params +Set rav1e options using a list of @var{key}=@var{value} pairs separated +by ":". See @command{rav1e --help} for a list of options. + +For example to specify librav1e encoding options with @option{-rav1e-params}: + +@example +ffmpeg -i input -c:v librav1e -b:v 500K -rav1e-params speed=5:low_latency=true output.mp4 +@end example + @end table @section libaom-av1 @@ -1434,6 +1519,38 @@ value is 1, which will be slow and high quality. Enable use of alternate reference frames. Defaults to the internal default of the library. +@item arnr-max-frames (@emph{frames}) +Set altref noise reduction max frame count. Default is -1. + +@item arnr-strength (@emph{strength}) +Set altref noise reduction filter strength. Range is -1 to 6. Default is -1. + +@item aq-mode (@emph{aq-mode}) +Set adaptive quantization mode. Possible values: + +@table @samp +@item none (@emph{0}) +Disabled. + +@item variance (@emph{1}) +Variance-based. + +@item complexity (@emph{2}) +Complexity-based. + +@item cyclic (@emph{3}) +Cyclic refresh. +@end table + +@item tune (@emph{tune}) +Set the distortion metric the encoder is tuned with. Default is @code{psnr}. + +@table @samp +@item psnr (@emph{0}) + +@item ssim (@emph{1}) +@end table + @item lag-in-frames Set the maximum number of frames which the encoder may keep in flight at any one time for lookahead purposes. Defaults to the internal @@ -1466,6 +1583,35 @@ buffer falls below this percentage, frames will be dropped until it has refilled above the threshold. Defaults to zero (no frames are dropped). +@item denoise-noise-level (@emph{level}) +Amount of noise to be removed for grain synthesis. Grain synthesis is disabled if +this option is not set or set to 0. + +@item denoise-block-size (@emph{pixels}) +Block size used for denoising for grain synthesis. If not set, AV1 codec +uses the default value of 32. + +@item undershoot-pct (@emph{pct}) +Set datarate undershoot (min) percentage of the target bitrate. Range is -1 to 100. +Default is -1. + +@item overshoot-pct (@emph{pct}) +Set datarate overshoot (max) percentage of the target bitrate. Range is -1 to 1000. +Default is -1. + +@item minsection-pct (@emph{pct}) +Minimum percentage variation of the GOP bitrate from the target bitrate. If minsection-pct +is not set, the libaomenc wrapper computes it as follows: @code{(minrate * 100 / bitrate)}. +Range is -1 to 100. Default is -1 (unset). + +@item maxsection-pct (@emph{pct}) +Maximum percentage variation of the GOP bitrate from the target bitrate. If maxsection-pct +is not set, the libaomenc wrapper computes it as follows: @code{(maxrate * 100 / bitrate)}. +Range is -1 to 5000. Default is -1 (unset). + +@item frame-parallel (@emph{boolean}) +Enable frame parallel decodability features. Default is true. + @item tiles Set the number of tiles to encode the input video with, as columns x rows. Larger numbers allow greater parallelism in both encoding and @@ -1480,6 +1626,179 @@ Provided for compatibility with libvpx/VP9. @item row-mt (Requires libaom >= 1.0.0-759-g90a15f4f2) Enable row based multi-threading. Disabled by default. +@item enable-cdef (@emph{boolean}) +Enable Constrained Directional Enhancement Filter. The libaom-av1 +encoder enables CDEF by default. + +@item enable-restoration (@emph{boolean}) +Enable Loop Restoration Filter. Default is true for libaom-av1. + +@item enable-global-motion (@emph{boolean}) +Enable the use of global motion for block prediction. Default is true. + +@item enable-intrabc (@emph{boolean}) +Enable block copy mode for intra block prediction. This mode is +useful for screen content. Default is true. + +@item enable-rect-partitions (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable rectangular partitions. Default is true. + +@item enable-1to4-partitions (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable 1:4/4:1 partitions. Default is true. + +@item enable-ab-partitions (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable AB shape partitions. Default is true. + +@item enable-angle-delta (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable angle delta intra prediction. Default is true. + +@item enable-cfl-intra (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable chroma predicted from luma intra prediction. Default is true. + +@item enable-filter-intra (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable filter intra predictor. Default is true. + +@item enable-intra-edge-filter (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable intra edge filter. Default is true. + +@item enable-smooth-intra (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable smooth intra prediction mode. Default is true. + +@item enable-paeth-intra (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable paeth predictor in intra prediction. Default is true. + +@item enable-palette (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable palette prediction mode. Default is true. + +@item enable-flip-idtx (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable extended transform type, including FLIPADST_DCT, DCT_FLIPADST, +FLIPADST_FLIPADST, ADST_FLIPADST, FLIPADST_ADST, IDTX, V_DCT, H_DCT, +V_ADST, H_ADST, V_FLIPADST, H_FLIPADST. Default is true. + +@item enable-tx64 (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable 64-pt transform. Default is true. + +@item reduced-tx-type-set (@emph{boolean}) (Requires libaom >= v2.0.0) +Use reduced set of transform types. Default is false. + +@item use-intra-dct-only (@emph{boolean}) (Requires libaom >= v2.0.0) +Use DCT only for INTRA modes. Default is false. + +@item use-inter-dct-only (@emph{boolean}) (Requires libaom >= v2.0.0) +Use DCT only for INTER modes. Default is false. + +@item use-intra-default-tx-only (@emph{boolean}) (Requires libaom >= v2.0.0) +Use Default-transform only for INTRA modes. Default is false. + +@item enable-ref-frame-mvs (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable temporal mv prediction. Default is true. + +@item enable-reduced-reference-set (@emph{boolean}) (Requires libaom >= v2.0.0) +Use reduced set of single and compound references. Default is false. + +@item enable-obmc (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable obmc. Default is true. + +@item enable-dual-filter (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable dual filter. Default is true. + +@item enable-diff-wtd-comp (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable difference-weighted compound. Default is true. + +@item enable-dist-wtd-comp (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable distance-weighted compound. Default is true. + +@item enable-onesided-comp (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable one sided compound. Default is true. + +@item enable-interinter-wedge (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable interinter wedge compound. Default is true. + +@item enable-interintra-wedge (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable interintra wedge compound. Default is true. + +@item enable-masked-comp (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable masked compound. Default is true. + +@item enable-interintra-comp (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable interintra compound. Default is true. + +@item enable-smooth-interintra (@emph{boolean}) (Requires libaom >= v2.0.0) +Enable smooth interintra mode. Default is true. + +@item aom-params +Set libaom options using a list of @var{key}=@var{value} pairs separated +by ":". For a list of supported options, see @command{aomenc --help} under the +section "AV1 Specific Options". + +For example to specify libaom encoding options with @option{-aom-params}: + +@example +ffmpeg -i input -c:v libaom-av1 -b:v 500K -aom-params tune=psnr:enable-tpl-model=1 output.mp4 +@end example + +@end table + +@section libsvtav1 + +SVT-AV1 encoder wrapper. + +Requires the presence of the SVT-AV1 headers and library during configuration. +You need to explicitly configure the build with @code{--enable-libsvtav1}. + +@subsection Options + +@table @option +@item profile +Set the encoding profile. + +@item level +Set the operating point level. + +@item tier +Set the operating point tier. + +@item rc +Set the rate control mode to use. + +Possible modes: +@table @option +@item cqp +Constant quantizer: use fixed values of qindex (dependent on the frame type) +throughout the stream. This mode is the default. + +@item vbr +Variable bitrate: use a target bitrate for the whole stream. + +@item cvbr +Constrained variable bitrate: use a target bitrate for each GOP. +@end table + +@item qmax +Set the maximum quantizer to use when using a bitrate mode. + +@item qmin +Set the minimum quantizer to use when using a bitrate mode. + +@item qp +Set the quantizer used in cqp rate control mode (0-63). + +@item sc_detection +Enable scene change detection. + +@item la_depth +Set number of frames to look ahead (0-120). + +@item preset +Set the quality-speed tradeoff, in the range 0 to 8. Higher values are +faster but lower quality. Defaults to 8 (highest speed). + +@item tile_rows +Set log2 of the number of rows of tiles to use (0-6). + +@item tile_columns +Set log2 of the number of columns of tiles to use (0-4). + @end table @section libkvazaar @@ -1754,7 +2073,7 @@ means unlimited. @item auto-alt-ref Enable use of alternate reference frames (2-pass only). Values greater than 1 enable multi-layer alternate reference frames (VP9 only). -@item arnr-max-frames +@item arnr-maxframes Set altref noise reduction max frame count. @item arnr-type Set altref noise reduction filter type: backward, forward, centered. @@ -1771,16 +2090,14 @@ Enable error resiliency features. Increase sharpness at the expense of lower PSNR. The valid range is [0, 7]. -@item VP8-specific options -@table @option @item ts-parameters Sets the temporal scalability configuration using a :-separated list of key=value pairs. For example, to specify temporal scalability parameters with @code{ffmpeg}: @example ffmpeg -i INPUT -c:v libvpx -ts-parameters ts_number_layers=3:\ -ts_target_bitrate=250000,500000,1000000:ts_rate_decimator=4,2,1:\ -ts_periodicity=4:ts_layer_id=0,2,1,2 OUTPUT +ts_target_bitrate=250,500,1000:ts_rate_decimator=4,2,1:\ +ts_periodicity=4:ts_layer_id=0,2,1,2:ts_layering_mode=3 OUTPUT @end example Below is a brief explanation of each of the parameters, please refer to @code{struct vpx_codec_enc_cfg} in @code{vpx/vpx_encoder.h} for more @@ -1789,13 +2106,38 @@ details. @item ts_number_layers Number of temporal coding layers. @item ts_target_bitrate -Target bitrate for each temporal layer. +Target bitrate for each temporal layer (in kbps). +(bitrate should be inclusive of the lower temporal layer). @item ts_rate_decimator Frame rate decimation factor for each temporal layer. @item ts_periodicity Length of the sequence defining frame temporal layer membership. @item ts_layer_id Template defining the membership of frames to temporal layers. +@item ts_layering_mode +(optional) Selecting the temporal structure from a set of pre-defined temporal layering modes. +Currently supports the following options. +@table @option +@item 0 +No temporal layering flags are provided internally, +relies on flags being passed in using @code{metadata} field in @code{AVFrame} +with following keys. +@table @option +@item vp8-flags +Sets the flags passed into the encoder to indicate the referencing scheme for +the current frame. +Refer to function @code{vpx_codec_encode} in @code{vpx/vpx_encoder.h} for more +details. +@item temporal_id +Explicitly sets the temporal id of the current frame to encode. +@end table +@item 2 +Two temporal layers. 0-1... +@item 3 +Three temporal layers. 0-2-1-2...; with single reference frame. +@item 4 +Same as option "3", except there is a dependency between +the two temporal layer 2 frames within the temporal period. @end table @end table @@ -1839,6 +2181,38 @@ midpoint is passed in rather than calculated for a specific clip or chunk. The valid range is [0, 10000]. 0 (default) uses standard VBR. @item enable-tpl @var{boolean} Enable temporal dependency model. +@item ref-frame-config +Using per-frame metadata, set members of the structure @code{vpx_svc_ref_frame_config_t} in @code{vpx/vp8cx.h} to fine-control referencing schemes and frame buffer management. +@*Use a :-separated list of key=value pairs. +For example, +@example +av_dict_set(&av_frame->metadata, "ref-frame-config", \ +"rfc_update_buffer_slot=7:rfc_lst_fb_idx=0:rfc_gld_fb_idx=1:rfc_alt_fb_idx=2:rfc_reference_last=0:rfc_reference_golden=0:rfc_reference_alt_ref=0"); +@end example +@table @option +@item rfc_update_buffer_slot +Indicates the buffer slot number to update +@item rfc_update_last +Indicates whether to update the LAST frame +@item rfc_update_golden +Indicates whether to update GOLDEN frame +@item rfc_update_alt_ref +Indicates whether to update ALT_REF frame +@item rfc_lst_fb_idx +LAST frame buffer index +@item rfc_gld_fb_idx +GOLDEN frame buffer index +@item rfc_alt_fb_idx +ALT_REF frame buffer index +@item rfc_reference_last +Indicates whether to reference LAST frame +@item rfc_reference_golden +Indicates whether to reference GOLDEN frame +@item rfc_reference_alt_ref +Indicates whether to reference ALT_REF frame +@item rfc_reference_duration +Indicates frame duration +@end table @end table @end table @@ -1935,9 +2309,7 @@ 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. +x264's configure time. @subsection Options @@ -2300,6 +2672,20 @@ during configuration. You need to explicitly configure the build with @subsection Options @table @option +@item b +Sets target video bitrate. + +@item bf + +@item g +Set the GOP size. + +@item keyint_min +Minimum GOP size. + +@item refs +Number of reference frames each P-frame can use. The range is from @var{1-16}. + @item preset Set the x265 preset. @@ -2312,6 +2698,28 @@ Set profile restrictions. @item crf Set the quality for constant quality mode. +@item qp +Set constant quantization rate control method parameter. + +@item qmin +Minimum quantizer scale. + +@item qmax +Maximum quantizer scale. + +@item qdiff +Maximum difference between quantizer scales. + +@item qblur +Quantizer curve blur + +@item qcomp +Quantizer curve compression factor + +@item i_qfactor + +@item b_qfactor + @item forced-idr Normally, when forcing a I-frame type, the encoder can select any type of I-frame. This option forces it to choose an IDR-frame. @@ -2547,6 +2955,14 @@ fastest. @end table +@section MediaFoundation + +This provides wrappers to encoders (both audio and video) in the +MediaFoundation framework. It can access both SW and HW encoders. +Video encoders can take input in either of nv12 or yuv420p form +(some encoders support both, some support only either - in practice, +nv12 is the safer choice, especially among HW encoders). + @section mpeg2 MPEG-2 video encoder. @@ -2554,6 +2970,30 @@ MPEG-2 video encoder. @subsection Options @table @option +@item profile +Select the mpeg2 profile to encode: + +@table @samp +@item 422 +@item high +@item ss +Spatially Scalable +@item snr +SNR Scalable +@item main +@item simple +@end table + +@item level +Select the mpeg2 level to encode: + +@table @samp +@item high +@item high1440 +@item main +@item low +@end table + @item seq_disp_ext @var{integer} Specifies if the encoder should write a sequence_display_extension to the output. @@ -2574,6 +3014,9 @@ Specifies the video_format written into the sequence display extension indicating the source of the video pictures. The default is @samp{unspecified}, can be @samp{component}, @samp{pal}, @samp{ntsc}, @samp{secam} or @samp{mac}. For maximum compatibility, use @samp{component}. +@item a53cc @var{boolean} +Import closed captions (which must be ATSC compatible format) into output. +Default is 1 (on). @end table @section png @@ -2659,7 +3102,7 @@ recommended value) and do not set a size constraint. @section QSV encoders -The family of Intel QuickSync Video encoders (MPEG-2, H.264 and HEVC) +The family of Intel QuickSync Video encoders (MPEG-2, H.264, HEVC, JPEG/MJPEG and VP9) The ratecontrol method is selected as follows: @@ -2824,6 +3267,30 @@ Set the B-frame reference depth. When set to one (the default), all B-frames will refer only to P- or I-frames. When set to greater values multiple layers of B-frames will be present, frames in each layer only referring to frames in higher layers. + +@item rc_mode +Set the rate control mode to use. A given driver may only support a subset of +modes. + +Possible modes: +@table @option +@item auto +Choose the mode automatically based on driver support and the other options. +This is the default. +@item CQP +Constant-quality. +@item CBR +Constant-bitrate. +@item VBR +Variable-bitrate. +@item ICQ +Intelligent constant-quality. +@item QVBR +Quality-defined variable-bitrate. +@item AVBR +Average variable bitrate. +@end table + @end table Each encoder also has its own specific options: @@ -2888,6 +3355,11 @@ Include HDR metadata if the input frames have it messages). @end table +@item tiles +Set the number of tiles to encode the input video with, as columns x rows. +Larger numbers allow greater parallelism in both encoding and decoding, but +may decrease coding efficiency. + @end table @item mjpeg_vaapi @@ -3018,6 +3490,14 @@ and they can also be used in Matroska files. @subsection Options @table @option +@item palette +Specify the global palette used by the bitmaps. + +The format for this option is a string containing 16 24-bits hexadecimal +numbers (without 0x prefix) separated by commas, for example @code{0d00ee, +ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, +7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b}. + @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