X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=doc%2Fencoders.texi;h=c2ba7d3e6faff489b973a8b836ec17ec751a630a;hb=a00ff56321b8504150095d4dfc71227ac77f7e8f;hp=c9464ca7b3b8fbb1568604b6c1d7cb4da162c7d9;hpb=55e021f39b02e838672582dbe94fe279bfc8328c;p=ffmpeg diff --git a/doc/encoders.texi b/doc/encoders.texi index c9464ca7b3b..c2ba7d3e6fa 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 @@ -1364,10 +1316,436 @@ 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 + +libaom AV1 encoder wrapper. + +Requires the presence of the libaom headers and library during +configuration. You need to explicitly configure the build with +@code{--enable-libaom}. + +@subsection Options + +The wrapper supports the following standard libavcodec options: + +@table @option + +@item b +Set bitrate target in bits/second. By default this will use +variable-bitrate mode. If @option{maxrate} and @option{minrate} are +also set to the same value then it will use constant-bitrate mode, +otherwise if @option{crf} is set as well then it will use +constrained-quality mode. + +@item g keyint_min +Set key frame placement. The GOP size sets the maximum distance between +key frames; if zero the output stream will be intra-only. The minimum +distance is ignored unless it is the same as the GOP size, in which case +key frames will always appear at a fixed interval. Not set by default, +so without this option the library has completely free choice about +where to place key frames. + +@item qmin qmax +Set minimum/maximum quantisation values. Valid range is from 0 to 63 +(warning: this does not match the quantiser values actually used by AV1 +- divide by four to map real quantiser values to this range). Defaults +to min/max (no constraint). + +@item minrate maxrate bufsize rc_init_occupancy +Set rate control buffering parameters. Not used if not set - defaults +to unconstrained variable bitrate. + +@item threads +Set the number of threads to use while encoding. This may require the +@option{tiles} or @option{row-mt} options to also be set to actually +use the specified number of threads fully. Defaults to the number of +hardware threads supported by the host machine. + +@item profile +Set the encoding profile. Defaults to using the profile which matches +the bit depth and chroma subsampling of the input. + +@end table + +The wrapper also has some specific options: + +@table @option + +@item cpu-used +Set the quality/encoding speed tradeoff. Valid range is from 0 to 8, +higher numbers indicating greater speed and lower quality. The default +value is 1, which will be slow and high quality. + +@item auto-alt-ref +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 +default of the library. + +@item error-resilience +Enable error resilience features: +@table @option +@item default +Improve resilience against losses of whole frames. +@end table +Not enabled by default. + +@item crf +Set the quality/size tradeoff for constant-quality (no bitrate target) +and constrained-quality (with maximum bitrate target) modes. Valid +range is 0 to 63, higher numbers indicating lower quality and smaller +output size. Only used if set; by default only the bitrate target is +used. + +@item static-thresh +Set a change threshold on blocks below which they will be skipped by +the encoder. Defined in arbitrary units as a nonnegative integer, +defaulting to zero (no blocks are skipped). + +@item drop-threshold +Set a threshold for dropping frames when close to rate control bounds. +Defined as a percentage of the target buffer - when the rate control +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 +decoding, but may decrease coding efficiency. Defaults to the minimum +number of tiles required by the size of the input video (this is 1x1 +(that is, a single tile) for sizes up to and including 4K). + +@item tile-columns tile-rows +Set the number of tiles as log2 of the number of tile rows and columns. +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. + +@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 @@ -1642,7 +2020,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. @@ -1655,6 +2033,61 @@ Set number of frames to look ahead for frametype and ratecontrol. @item error-resilient Enable error resiliency features. +@item sharpness @var{integer} +Increase sharpness at the expense of lower PSNR. +The valid range is [0, 7]. + +@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=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 +details. +@table @option +@item ts_number_layers +Number of temporal coding layers. +@item ts_target_bitrate +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 + @item VP9-specific options @table @option @item lossless @@ -1695,6 +2128,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 @@ -2156,6 +2621,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. @@ -2168,6 +2647,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. @@ -2183,6 +2684,63 @@ ffmpeg -i input -c:v libx265 -x265-params crf=26:psy-rd=1 output.mp4 @end example @end table +@section libxavs2 + +xavs2 AVS2-P2/IEEE1857.4 encoder wrapper. + +This encoder requires the presence of the libxavs2 headers and library +during configuration. You need to explicitly configure the build with +@option{--enable-libxavs2}. + +The following standard libavcodec options are used: +@itemize +@item +@option{b} / @option{bit_rate} +@item +@option{g} / @option{gop_size} +@item +@option{bf} / @option{max_b_frames} +@end itemize + +The encoder also has its own specific options: +@subsection Options + +@table @option +@item lcu_row_threads +Set the number of parallel threads for rows from 1 to 8 (default 5). + +@item initial_qp +Set the xavs2 quantization parameter from 1 to 63 (default 34). This is +used to set the initial qp for the first frame. + +@item qp +Set the xavs2 quantization parameter from 1 to 63 (default 34). This is +used to set the qp value under constant-QP mode. + +@item max_qp +Set the max qp for rate control from 1 to 63 (default 55). + +@item min_qp +Set the min qp for rate control from 1 to 63 (default 20). + +@item speed_level +Set the Speed level from 0 to 9 (default 0). Higher is better but slower. + +@item log_level +Set the log level from -1 to 3 (default 0). -1: none, 0: error, +1: warning, 2: info, 3: debug. + +@item xavs2-params +Set xavs2 options using a list of @var{key}=@var{value} couples separated +by ":". + +For example to specify libxavs2 encoding options with @option{-xavs2-params}: + +@example +ffmpeg -i input -c:v libxavs2 -xavs2-params RdoqLevel=0 output.avs2 +@end example +@end table + @section libxvid Xvid MPEG-4 Part 2 encoder wrapper. @@ -2346,6 +2904,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. @@ -2353,6 +2919,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. @@ -2373,6 +2963,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 @@ -2458,7 +3051,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: @@ -2606,15 +3199,48 @@ Size / quality tradeoff: higher values are smaller / worse quality. @end itemize All encoders support the following options: -@itemize -@item -@option{low_power} - +@table @option +@item low_power Some drivers/platforms offer a second encoder for some codecs intended to use less power than the default encoder; setting this option will attempt to use that encoder. Note that it may support a reduced feature set, so some other options may not be available in this mode. -@end itemize + +@item idr_interval +Set the number of normal intra frames between full-refresh (IDR) frames in +open-GOP mode. The intra frames are still IRAPs, but will not include global +headers and may have non-decodable leading pictures. + +@item b_depth +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: @table @option @@ -2678,6 +3304,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 @@ -2794,52 +3425,6 @@ Reduces detail but attempts to preserve color at extremely low bitrates. @end table -@section libxavs2 - -xavs2 AVS2-P2/IEEE1857.4 encoder wrapper. - -This encoder requires the presence of the libxavs2 headers and library -during configuration. You need to explicitly configure the build with -@option{--enable-libxavs2}. - -@subsection Options - -@table @option -@item lcu_row_threads -Set the number of parallel threads for rows from 1 to 8 (default 5). - -@item initial_qp -Set the xavs2 quantization parameter from 1 to 63 (default 34). This is -used to set the initial qp for the first frame. - -@item qp -Set the xavs2 quantization parameter from 1 to 63 (default 34). This is -used to set the qp value under constant-QP mode. - -@item max_qp -Set the max qp for rate control from 1 to 63 (default 55). - -@item min_qp -Set the min qp for rate control from 1 to 63 (default 20). - -@item speed_level -Set the Speed level from 0 to 9 (default 0). Higher is better but slower. - -@item log_level -Set the log level from -1 to 3 (default 0). -1: none, 0: error, -1: warning, 2: info, 3: debug. - -@item xavs2-params -Set xavs2 options using a list of @var{key}=@var{value} couples separated -by ":". - -For example to specify libxavs2 encoding options with @option{-xavs2-params}: - -@example -ffmpeg -i input -c:v libxavs2 -xavs2-params preset_level=5 output.avs2 -@end example -@end table - @c man end VIDEO ENCODERS @chapter Subtitles Encoders @@ -2854,6 +3439,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