1@chapter Encoders 2@c man begin ENCODERS 3 4Encoders are configured elements in FFmpeg which allow the encoding of 5multimedia streams. 6 7When you configure your FFmpeg build, all the supported native encoders 8are enabled by default. Encoders requiring an external library must be enabled 9manually via the corresponding @code{--enable-lib} option. You can list all 10available encoders using the configure option @code{--list-encoders}. 11 12You can disable all the encoders with the configure option 13@code{--disable-encoders} and selectively enable / disable single encoders 14with the options @code{--enable-encoder=@var{ENCODER}} / 15@code{--disable-encoder=@var{ENCODER}}. 16 17The option @code{-encoders} of the ff* tools will display the list of 18enabled encoders. 19 20@c man end ENCODERS 21 22@chapter Audio Encoders 23@c man begin AUDIO ENCODERS 24 25A description of some of the currently available audio encoders 26follows. 27 28@anchor{aacenc} 29@section aac 30 31Advanced Audio Coding (AAC) encoder. 32 33This encoder is the default AAC encoder, natively implemented into FFmpeg. 34 35@subsection Options 36 37@table @option 38@item b 39Set bit rate in bits/s. Setting this automatically activates constant bit rate 40(CBR) mode. If this option is unspecified it is set to 128kbps. 41 42@item q 43Set quality for variable bit rate (VBR) mode. This option is valid only using 44the @command{ffmpeg} command-line tool. For library interface users, use 45@option{global_quality}. 46 47@item cutoff 48Set cutoff frequency. If unspecified will allow the encoder to dynamically 49adjust the cutoff to improve clarity on low bitrates. 50 51@item aac_coder 52Set AAC encoder coding method. Possible values: 53 54@table @samp 55@item twoloop 56Two loop searching (TLS) method. 57 58This method first sets quantizers depending on band thresholds and then tries 59to find an optimal combination by adding or subtracting a specific value from 60all quantizers and adjusting some individual quantizer a little. Will tune 61itself based on whether @option{aac_is}, @option{aac_ms} and @option{aac_pns} 62are enabled. 63 64@item anmr 65Average noise to mask ratio (ANMR) trellis-based solution. 66 67This is an experimental coder which currently produces a lower quality, is more 68unstable and is slower than the default twoloop coder but has potential. 69Currently has no support for the @option{aac_is} or @option{aac_pns} options. 70Not currently recommended. 71 72@item fast 73Constant quantizer method. 74 75Uses a cheaper version of twoloop algorithm that doesn't try to do as many 76clever adjustments. Worse with low bitrates (less than 64kbps), but is better 77and much faster at higher bitrates. 78This is the default choice for a coder 79 80@end table 81 82@item aac_ms 83Sets mid/side coding mode. The default value of "auto" will automatically use 84M/S with bands which will benefit from such coding. Can be forced for all bands 85using the value "enable", which is mainly useful for debugging or disabled using 86"disable". 87 88@item aac_is 89Sets intensity stereo coding tool usage. By default, it's enabled and will 90automatically toggle IS for similar pairs of stereo bands if it's beneficial. 91Can be disabled for debugging by setting the value to "disable". 92 93@item aac_pns 94Uses perceptual noise substitution to replace low entropy high frequency bands 95with imperceptible white noise during the decoding process. By default, it's 96enabled, but can be disabled for debugging purposes by using "disable". 97 98@item aac_tns 99Enables the use of a multitap FIR filter which spans through the high frequency 100bands to hide quantization noise during the encoding process and is reverted 101by the decoder. As well as decreasing unpleasant artifacts in the high range 102this also reduces the entropy in the high bands and allows for more bits to 103be used by the mid-low bands. By default it's enabled but can be disabled for 104debugging by setting the option to "disable". 105 106@item aac_ltp 107Enables the use of the long term prediction extension which increases coding 108efficiency in very low bandwidth situations such as encoding of voice or 109solo piano music by extending constant harmonic peaks in bands throughout 110frames. This option is implied by profile:a aac_low and is incompatible with 111aac_pred. Use in conjunction with @option{-ar} to decrease the samplerate. 112 113@item aac_pred 114Enables the use of a more traditional style of prediction where the spectral 115coefficients transmitted are replaced by the difference of the current 116coefficients minus the previous "predicted" coefficients. In theory and sometimes 117in practice this can improve quality for low to mid bitrate audio. 118This option implies the aac_main profile and is incompatible with aac_ltp. 119 120@item profile 121Sets the encoding profile, possible values: 122 123@table @samp 124@item aac_low 125The default, AAC "Low-complexity" profile. Is the most compatible and produces 126decent quality. 127 128@item mpeg2_aac_low 129Equivalent to @code{-profile:a aac_low -aac_pns 0}. PNS was introduced with the 130MPEG4 specifications. 131 132@item aac_ltp 133Long term prediction profile, is enabled by and will enable the @option{aac_ltp} 134option. Introduced in MPEG4. 135 136@item aac_main 137Main-type prediction profile, is enabled by and will enable the @option{aac_pred} 138option. Introduced in MPEG2. 139 140@end table 141If this option is unspecified it is set to @samp{aac_low}. 142@end table 143 144@section ac3 and ac3_fixed 145 146AC-3 audio encoders. 147 148These encoders implement part of ATSC A/52:2010 and ETSI TS 102 366, as well as 149the undocumented RealAudio 3 (a.k.a. dnet). 150 151The @var{ac3} encoder uses floating-point math, while the @var{ac3_fixed} 152encoder only uses fixed-point integer math. This does not mean that one is 153always faster, just that one or the other may be better suited to a 154particular system. The floating-point encoder will generally produce better 155quality audio for a given bitrate. The @var{ac3_fixed} encoder is not the 156default codec for any of the output formats, so it must be specified explicitly 157using the option @code{-acodec ac3_fixed} in order to use it. 158 159@subsection AC-3 Metadata 160 161The AC-3 metadata options are used to set parameters that describe the audio, 162but in most cases do not affect the audio encoding itself. Some of the options 163do directly affect or influence the decoding and playback of the resulting 164bitstream, while others are just for informational purposes. A few of the 165options will add bits to the output stream that could otherwise be used for 166audio data, and will thus affect the quality of the output. Those will be 167indicated accordingly with a note in the option list below. 168 169These parameters are described in detail in several publicly-available 170documents. 171@itemize 172@item @uref{http://www.atsc.org/cms/standards/a_52-2010.pdf,A/52:2010 - Digital Audio Compression (AC-3) (E-AC-3) Standard} 173@item @uref{http://www.atsc.org/cms/standards/a_54a_with_corr_1.pdf,A/54 - Guide to the Use of the ATSC Digital Television Standard} 174@item @uref{http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/18_Metadata.Guide.pdf,Dolby Metadata Guide} 175@item @uref{http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/46_DDEncodingGuidelines.pdf,Dolby Digital Professional Encoding Guidelines} 176@end itemize 177 178@subsubsection Metadata Control Options 179 180@table @option 181 182@item -per_frame_metadata @var{boolean} 183Allow Per-Frame Metadata. Specifies if the encoder should check for changing 184metadata for each frame. 185@table @option 186@item 0 187The metadata values set at initialization will be used for every frame in the 188stream. (default) 189@item 1 190Metadata values can be changed before encoding each frame. 191@end table 192 193@end table 194 195@subsubsection Downmix Levels 196 197@table @option 198 199@item -center_mixlev @var{level} 200Center Mix Level. The amount of gain the decoder should apply to the center 201channel when downmixing to stereo. This field will only be written to the 202bitstream if a center channel is present. The value is specified as a scale 203factor. There are 3 valid values: 204@table @option 205@item 0.707 206Apply -3dB gain 207@item 0.595 208Apply -4.5dB gain (default) 209@item 0.500 210Apply -6dB gain 211@end table 212 213@item -surround_mixlev @var{level} 214Surround Mix Level. The amount of gain the decoder should apply to the surround 215channel(s) when downmixing to stereo. This field will only be written to the 216bitstream if one or more surround channels are present. The value is specified 217as a scale factor. There are 3 valid values: 218@table @option 219@item 0.707 220Apply -3dB gain 221@item 0.500 222Apply -6dB gain (default) 223@item 0.000 224Silence Surround Channel(s) 225@end table 226 227@end table 228 229@subsubsection Audio Production Information 230Audio Production Information is optional information describing the mixing 231environment. Either none or both of the fields are written to the bitstream. 232 233@table @option 234 235@item -mixing_level @var{number} 236Mixing Level. Specifies peak sound pressure level (SPL) in the production 237environment when the mix was mastered. Valid values are 80 to 111, or -1 for 238unknown or not indicated. The default value is -1, but that value cannot be 239used if the Audio Production Information is written to the bitstream. Therefore, 240if the @code{room_type} option is not the default value, the @code{mixing_level} 241option must not be -1. 242 243@item -room_type @var{type} 244Room Type. Describes the equalization used during the final mixing session at 245the studio or on the dubbing stage. A large room is a dubbing stage with the 246industry standard X-curve equalization; a small room has flat equalization. 247This field will not be written to the bitstream if both the @code{mixing_level} 248option and the @code{room_type} option have the default values. 249@table @option 250@item 0 251@itemx notindicated 252Not Indicated (default) 253@item 1 254@itemx large 255Large Room 256@item 2 257@itemx small 258Small Room 259@end table 260 261@end table 262 263@subsubsection Other Metadata Options 264 265@table @option 266 267@item -copyright @var{boolean} 268Copyright Indicator. Specifies whether a copyright exists for this audio. 269@table @option 270@item 0 271@itemx off 272No Copyright Exists (default) 273@item 1 274@itemx on 275Copyright Exists 276@end table 277 278@item -dialnorm @var{value} 279Dialogue Normalization. Indicates how far the average dialogue level of the 280program is below digital 100% full scale (0 dBFS). This parameter determines a 281level shift during audio reproduction that sets the average volume of the 282dialogue to a preset level. The goal is to match volume level between program 283sources. A value of -31dB will result in no volume level change, relative to 284the source volume, during audio reproduction. Valid values are whole numbers in 285the range -31 to -1, with -31 being the default. 286 287@item -dsur_mode @var{mode} 288Dolby Surround Mode. Specifies whether the stereo signal uses Dolby Surround 289(Pro Logic). This field will only be written to the bitstream if the audio 290stream is stereo. Using this option does @b{NOT} mean the encoder will actually 291apply Dolby Surround processing. 292@table @option 293@item 0 294@itemx notindicated 295Not Indicated (default) 296@item 1 297@itemx off 298Not Dolby Surround Encoded 299@item 2 300@itemx on 301Dolby Surround Encoded 302@end table 303 304@item -original @var{boolean} 305Original Bit Stream Indicator. Specifies whether this audio is from the 306original source and not a copy. 307@table @option 308@item 0 309@itemx off 310Not Original Source 311@item 1 312@itemx on 313Original Source (default) 314@end table 315 316@end table 317 318@subsection Extended Bitstream Information 319The extended bitstream options are part of the Alternate Bit Stream Syntax as 320specified in Annex D of the A/52:2010 standard. It is grouped into 2 parts. 321If any one parameter in a group is specified, all values in that group will be 322written to the bitstream. Default values are used for those that are written 323but have not been specified. If the mixing levels are written, the decoder 324will use these values instead of the ones specified in the @code{center_mixlev} 325and @code{surround_mixlev} options if it supports the Alternate Bit Stream 326Syntax. 327 328@subsubsection Extended Bitstream Information - Part 1 329 330@table @option 331 332@item -dmix_mode @var{mode} 333Preferred Stereo Downmix Mode. Allows the user to select either Lt/Rt 334(Dolby Surround) or Lo/Ro (normal stereo) as the preferred stereo downmix mode. 335@table @option 336@item 0 337@itemx notindicated 338Not Indicated (default) 339@item 1 340@itemx ltrt 341Lt/Rt Downmix Preferred 342@item 2 343@itemx loro 344Lo/Ro Downmix Preferred 345@end table 346 347@item -ltrt_cmixlev @var{level} 348Lt/Rt Center Mix Level. The amount of gain the decoder should apply to the 349center channel when downmixing to stereo in Lt/Rt mode. 350@table @option 351@item 1.414 352Apply +3dB gain 353@item 1.189 354Apply +1.5dB gain 355@item 1.000 356Apply 0dB gain 357@item 0.841 358Apply -1.5dB gain 359@item 0.707 360Apply -3.0dB gain 361@item 0.595 362Apply -4.5dB gain (default) 363@item 0.500 364Apply -6.0dB gain 365@item 0.000 366Silence Center Channel 367@end table 368 369@item -ltrt_surmixlev @var{level} 370Lt/Rt Surround Mix Level. The amount of gain the decoder should apply to the 371surround channel(s) when downmixing to stereo in Lt/Rt mode. 372@table @option 373@item 0.841 374Apply -1.5dB gain 375@item 0.707 376Apply -3.0dB gain 377@item 0.595 378Apply -4.5dB gain 379@item 0.500 380Apply -6.0dB gain (default) 381@item 0.000 382Silence Surround Channel(s) 383@end table 384 385@item -loro_cmixlev @var{level} 386Lo/Ro Center Mix Level. The amount of gain the decoder should apply to the 387center channel when downmixing to stereo in Lo/Ro mode. 388@table @option 389@item 1.414 390Apply +3dB gain 391@item 1.189 392Apply +1.5dB gain 393@item 1.000 394Apply 0dB gain 395@item 0.841 396Apply -1.5dB gain 397@item 0.707 398Apply -3.0dB gain 399@item 0.595 400Apply -4.5dB gain (default) 401@item 0.500 402Apply -6.0dB gain 403@item 0.000 404Silence Center Channel 405@end table 406 407@item -loro_surmixlev @var{level} 408Lo/Ro Surround Mix Level. The amount of gain the decoder should apply to the 409surround channel(s) when downmixing to stereo in Lo/Ro mode. 410@table @option 411@item 0.841 412Apply -1.5dB gain 413@item 0.707 414Apply -3.0dB gain 415@item 0.595 416Apply -4.5dB gain 417@item 0.500 418Apply -6.0dB gain (default) 419@item 0.000 420Silence Surround Channel(s) 421@end table 422 423@end table 424 425@subsubsection Extended Bitstream Information - Part 2 426 427@table @option 428 429@item -dsurex_mode @var{mode} 430Dolby Surround EX Mode. Indicates whether the stream uses Dolby Surround EX 431(7.1 matrixed to 5.1). Using this option does @b{NOT} mean the encoder will actually 432apply Dolby Surround EX processing. 433@table @option 434@item 0 435@itemx notindicated 436Not Indicated (default) 437@item 1 438@itemx on 439Dolby Surround EX Off 440@item 2 441@itemx off 442Dolby Surround EX On 443@end table 444 445@item -dheadphone_mode @var{mode} 446Dolby Headphone Mode. Indicates whether the stream uses Dolby Headphone 447encoding (multi-channel matrixed to 2.0 for use with headphones). Using this 448option does @b{NOT} mean the encoder will actually apply Dolby Headphone 449processing. 450@table @option 451@item 0 452@itemx notindicated 453Not Indicated (default) 454@item 1 455@itemx on 456Dolby Headphone Off 457@item 2 458@itemx off 459Dolby Headphone On 460@end table 461 462@item -ad_conv_type @var{type} 463A/D Converter Type. Indicates whether the audio has passed through HDCD A/D 464conversion. 465@table @option 466@item 0 467@itemx standard 468Standard A/D Converter (default) 469@item 1 470@itemx hdcd 471HDCD A/D Converter 472@end table 473 474@end table 475 476@subsection Other AC-3 Encoding Options 477 478@table @option 479 480@item -stereo_rematrixing @var{boolean} 481Stereo Rematrixing. Enables/Disables use of rematrixing for stereo input. This 482is an optional AC-3 feature that increases quality by selectively encoding 483the left/right channels as mid/side. This option is enabled by default, and it 484is highly recommended that it be left as enabled except for testing purposes. 485 486@item cutoff @var{frequency} 487Set lowpass cutoff frequency. If unspecified, the encoder selects a default 488determined by various other encoding parameters. 489 490@end table 491 492@subsection Floating-Point-Only AC-3 Encoding Options 493 494These options are only valid for the floating-point encoder and do not exist 495for the fixed-point encoder due to the corresponding features not being 496implemented in fixed-point. 497 498@table @option 499 500@item -channel_coupling @var{boolean} 501Enables/Disables use of channel coupling, which is an optional AC-3 feature 502that increases quality by combining high frequency information from multiple 503channels into a single channel. The per-channel high frequency information is 504sent with less accuracy in both the frequency and time domains. This allows 505more bits to be used for lower frequencies while preserving enough information 506to reconstruct the high frequencies. This option is enabled by default for the 507floating-point encoder and should generally be left as enabled except for 508testing purposes or to increase encoding speed. 509@table @option 510@item -1 511@itemx auto 512Selected by Encoder (default) 513@item 0 514@itemx off 515Disable Channel Coupling 516@item 1 517@itemx on 518Enable Channel Coupling 519@end table 520 521@item -cpl_start_band @var{number} 522Coupling Start Band. Sets the channel coupling start band, from 1 to 15. If a 523value higher than the bandwidth is used, it will be reduced to 1 less than the 524coupling end band. If @var{auto} is used, the start band will be determined by 525the encoder based on the bit rate, sample rate, and channel layout. This option 526has no effect if channel coupling is disabled. 527@table @option 528@item -1 529@itemx auto 530Selected by Encoder (default) 531@end table 532 533@end table 534 535@anchor{flac} 536@section flac 537 538FLAC (Free Lossless Audio Codec) Encoder 539 540@subsection Options 541 542The following options are supported by FFmpeg's flac encoder. 543 544@table @option 545@item compression_level 546Sets the compression level, which chooses defaults for many other options 547if they are not set explicitly. Valid values are from 0 to 12, 5 is the 548default. 549 550@item frame_size 551Sets the size of the frames in samples per channel. 552 553@item lpc_coeff_precision 554Sets the LPC coefficient precision, valid values are from 1 to 15, 15 is the 555default. 556 557@item lpc_type 558Sets the first stage LPC algorithm 559@table @samp 560@item none 561LPC is not used 562 563@item fixed 564fixed LPC coefficients 565 566@item levinson 567 568@item cholesky 569@end table 570 571@item lpc_passes 572Number of passes to use for Cholesky factorization during LPC analysis 573 574@item min_partition_order 575The minimum partition order 576 577@item max_partition_order 578The maximum partition order 579 580@item prediction_order_method 581@table @samp 582@item estimation 583@item 2level 584@item 4level 585@item 8level 586@item search 587Bruteforce search 588@item log 589@end table 590 591@item ch_mode 592Channel mode 593@table @samp 594@item auto 595The mode is chosen automatically for each frame 596@item indep 597Channels are independently coded 598@item left_side 599@item right_side 600@item mid_side 601@end table 602 603@item exact_rice_parameters 604Chooses if rice parameters are calculated exactly or approximately. 605if set to 1 then they are chosen exactly, which slows the code down slightly and 606improves compression slightly. 607 608@item multi_dim_quant 609Multi Dimensional Quantization. If set to 1 then a 2nd stage LPC algorithm is 610applied after the first stage to finetune the coefficients. This is quite slow 611and slightly improves compression. 612 613@end table 614 615@anchor{opusenc} 616@section opus 617 618Opus encoder. 619 620This is a native FFmpeg encoder for the Opus format. Currently its in development and 621only implements the CELT part of the codec. Its quality is usually worse and at best 622is equal to the libopus encoder. 623 624@subsection Options 625 626@table @option 627@item b 628Set bit rate in bits/s. If unspecified it uses the number of channels and the layout 629to make a good guess. 630 631@item opus_delay 632Sets the maximum delay in milliseconds. Lower delays than 20ms will very quickly 633decrease quality. 634@end table 635 636@anchor{libfdk-aac-enc} 637@section libfdk_aac 638 639libfdk-aac AAC (Advanced Audio Coding) encoder wrapper. 640 641The libfdk-aac library is based on the Fraunhofer FDK AAC code from 642the Android project. 643 644Requires the presence of the libfdk-aac headers and library during 645configuration. You need to explicitly configure the build with 646@code{--enable-libfdk-aac}. The library is also incompatible with GPL, 647so if you allow the use of GPL, you should configure with 648@code{--enable-gpl --enable-nonfree --enable-libfdk-aac}. 649 650This encoder has support for the AAC-HE profiles. 651 652VBR encoding, enabled through the @option{vbr} or @option{flags 653+qscale} options, is experimental and only works with some 654combinations of parameters. 655 656Support for encoding 7.1 audio is only available with libfdk-aac 0.1.3 or 657higher. 658 659For more information see the fdk-aac project at 660@url{http://sourceforge.net/p/opencore-amr/fdk-aac/}. 661 662@subsection Options 663 664The following options are mapped on the shared FFmpeg codec options. 665 666@table @option 667@item b 668Set bit rate in bits/s. If the bitrate is not explicitly specified, it 669is automatically set to a suitable value depending on the selected 670profile. 671 672In case VBR mode is enabled the option is ignored. 673 674@item ar 675Set audio sampling rate (in Hz). 676 677@item channels 678Set the number of audio channels. 679 680@item flags +qscale 681Enable fixed quality, VBR (Variable Bit Rate) mode. 682Note that VBR is implicitly enabled when the @option{vbr} value is 683positive. 684 685@item cutoff 686Set cutoff frequency. If not specified (or explicitly set to 0) it 687will use a value automatically computed by the library. Default value 688is 0. 689 690@item profile 691Set audio profile. 692 693The following profiles are recognized: 694@table @samp 695@item aac_low 696Low Complexity AAC (LC) 697 698@item aac_he 699High Efficiency AAC (HE-AAC) 700 701@item aac_he_v2 702High Efficiency AAC version 2 (HE-AACv2) 703 704@item aac_ld 705Low Delay AAC (LD) 706 707@item aac_eld 708Enhanced Low Delay AAC (ELD) 709@end table 710 711If not specified it is set to @samp{aac_low}. 712@end table 713 714The following are private options of the libfdk_aac encoder. 715 716@table @option 717@item afterburner 718Enable afterburner feature if set to 1, disabled if set to 0. This 719improves the quality but also the required processing power. 720 721Default value is 1. 722 723@item eld_sbr 724Enable SBR (Spectral Band Replication) for ELD if set to 1, disabled 725if set to 0. 726 727Default value is 0. 728 729@item eld_v2 730Enable ELDv2 (LD-MPS extension for ELD stereo signals) for ELDv2 if set to 1, 731disabled if set to 0. 732 733Note that option is available when fdk-aac version (AACENCODER_LIB_VL0.AACENCODER_LIB_VL1.AACENCODER_LIB_VL2) > (4.0.0). 734 735Default value is 0. 736 737@item signaling 738Set SBR/PS signaling style. 739 740It can assume one of the following values: 741@table @samp 742@item default 743choose signaling implicitly (explicit hierarchical by default, 744implicit if global header is disabled) 745 746@item implicit 747implicit backwards compatible signaling 748 749@item explicit_sbr 750explicit SBR, implicit PS signaling 751 752@item explicit_hierarchical 753explicit hierarchical signaling 754@end table 755 756Default value is @samp{default}. 757 758@item latm 759Output LATM/LOAS encapsulated data if set to 1, disabled if set to 0. 760 761Default value is 0. 762 763@item header_period 764Set StreamMuxConfig and PCE repetition period (in frames) for sending 765in-band configuration buffers within LATM/LOAS transport layer. 766 767Must be a 16-bits non-negative integer. 768 769Default value is 0. 770 771@item vbr 772Set VBR mode, from 1 to 5. 1 is lowest quality (though still pretty 773good) and 5 is highest quality. A value of 0 will disable VBR, and CBR 774(Constant Bit Rate) is enabled. 775 776Currently only the @samp{aac_low} profile supports VBR encoding. 777 778VBR modes 1-5 correspond to roughly the following average bit rates: 779 780@table @samp 781@item 1 78232 kbps/channel 783@item 2 78440 kbps/channel 785@item 3 78648-56 kbps/channel 787@item 4 78864 kbps/channel 789@item 5 790about 80-96 kbps/channel 791@end table 792 793Default value is 0. 794@end table 795 796@subsection Examples 797 798@itemize 799@item 800Use @command{ffmpeg} to convert an audio file to VBR AAC in an M4A (MP4) 801container: 802@example 803ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a 804@end example 805 806@item 807Use @command{ffmpeg} to convert an audio file to CBR 64k kbps AAC, using the 808High-Efficiency AAC profile: 809@example 810ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a 811@end example 812@end itemize 813 814@anchor{libmp3lame} 815@section libmp3lame 816 817LAME (Lame Ain't an MP3 Encoder) MP3 encoder wrapper. 818 819Requires the presence of the libmp3lame headers and library during 820configuration. You need to explicitly configure the build with 821@code{--enable-libmp3lame}. 822 823See @ref{libshine} for a fixed-point MP3 encoder, although with a 824lower quality. 825 826@subsection Options 827 828The following options are supported by the libmp3lame wrapper. The 829@command{lame}-equivalent of the options are listed in parentheses. 830 831@table @option 832@item b (@emph{-b}) 833Set bitrate expressed in bits/s for CBR or ABR. LAME @code{bitrate} is 834expressed in kilobits/s. 835 836@item q (@emph{-V}) 837Set constant quality setting for VBR. This option is valid only 838using the @command{ffmpeg} command-line tool. For library interface 839users, use @option{global_quality}. 840 841@item compression_level (@emph{-q}) 842Set algorithm quality. Valid arguments are integers in the 0-9 range, 843with 0 meaning highest quality but slowest, and 9 meaning fastest 844while producing the worst quality. 845 846@item cutoff (@emph{--lowpass}) 847Set lowpass cutoff frequency. If unspecified, the encoder dynamically 848adjusts the cutoff. 849 850@item reservoir 851Enable use of bit reservoir when set to 1. Default value is 1. LAME 852has this enabled by default, but can be overridden by use 853@option{--nores} option. 854 855@item joint_stereo (@emph{-m j}) 856Enable the encoder to use (on a frame by frame basis) either L/R 857stereo or mid/side stereo. Default value is 1. 858 859@item abr (@emph{--abr}) 860Enable the encoder to use ABR when set to 1. The @command{lame} 861@option{--abr} sets the target bitrate, while this options only 862tells FFmpeg to use ABR still relies on @option{b} to set bitrate. 863 864@end table 865 866@section libopencore-amrnb 867 868OpenCORE Adaptive Multi-Rate Narrowband encoder. 869 870Requires the presence of the libopencore-amrnb headers and library during 871configuration. You need to explicitly configure the build with 872@code{--enable-libopencore-amrnb --enable-version3}. 873 874This is a mono-only encoder. Officially it only supports 8000Hz sample rate, 875but you can override it by setting @option{strict} to @samp{unofficial} or 876lower. 877 878@subsection Options 879 880@table @option 881 882@item b 883Set bitrate in bits per second. Only the following bitrates are supported, 884otherwise libavcodec will round to the nearest valid bitrate. 885 886@table @option 887@item 4750 888@item 5150 889@item 5900 890@item 6700 891@item 7400 892@item 7950 893@item 10200 894@item 12200 895@end table 896 897@item dtx 898Allow discontinuous transmission (generate comfort noise) when set to 1. The 899default value is 0 (disabled). 900 901@end table 902 903@section libopus 904 905libopus Opus Interactive Audio Codec encoder wrapper. 906 907Requires the presence of the libopus headers and library during 908configuration. You need to explicitly configure the build with 909@code{--enable-libopus}. 910 911@subsection Option Mapping 912 913Most libopus options are modelled after the @command{opusenc} utility from 914opus-tools. The following is an option mapping chart describing options 915supported by the libopus wrapper, and their @command{opusenc}-equivalent 916in parentheses. 917 918@table @option 919 920@item b (@emph{bitrate}) 921Set the bit rate in bits/s. FFmpeg's @option{b} option is 922expressed in bits/s, while @command{opusenc}'s @option{bitrate} in 923kilobits/s. 924 925@item vbr (@emph{vbr}, @emph{hard-cbr}, and @emph{cvbr}) 926Set VBR mode. The FFmpeg @option{vbr} option has the following 927valid arguments, with the @command{opusenc} equivalent options 928in parentheses: 929 930@table @samp 931@item off (@emph{hard-cbr}) 932Use constant bit rate encoding. 933 934@item on (@emph{vbr}) 935Use variable bit rate encoding (the default). 936 937@item constrained (@emph{cvbr}) 938Use constrained variable bit rate encoding. 939@end table 940 941@item compression_level (@emph{comp}) 942Set encoding algorithm complexity. Valid options are integers in 943the 0-10 range. 0 gives the fastest encodes but lower quality, while 10 944gives the highest quality but slowest encoding. The default is 10. 945 946@item frame_duration (@emph{framesize}) 947Set maximum frame size, or duration of a frame in milliseconds. The 948argument must be exactly the following: 2.5, 5, 10, 20, 40, 60. Smaller 949frame sizes achieve lower latency but less quality at a given bitrate. 950Sizes greater than 20ms are only interesting at fairly low bitrates. 951The default is 20ms. 952 953@item packet_loss (@emph{expect-loss}) 954Set expected packet loss percentage. The default is 0. 955 956@item application (N.A.) 957Set intended application type. Valid options are listed below: 958 959@table @samp 960@item voip 961Favor improved speech intelligibility. 962@item audio 963Favor faithfulness to the input (the default). 964@item lowdelay 965Restrict to only the lowest delay modes. 966@end table 967 968@item cutoff (N.A.) 969Set cutoff bandwidth in Hz. The argument must be exactly one of the 970following: 4000, 6000, 8000, 12000, or 20000, corresponding to 971narrowband, mediumband, wideband, super wideband, and fullband 972respectively. The default is 0 (cutoff disabled). 973 974@item mapping_family (@emph{mapping_family}) 975Set channel mapping family to be used by the encoder. The default value of -1 976uses mapping family 0 for mono and stereo inputs, and mapping family 1 977otherwise. The default also disables the surround masking and LFE bandwidth 978optimzations in libopus, and requires that the input contains 8 channels or 979fewer. 980 981Other values include 0 for mono and stereo, 1 for surround sound with masking 982and LFE bandwidth optimizations, and 255 for independent streams with an 983unspecified channel layout. 984 985@item apply_phase_inv (N.A.) (requires libopus >= 1.2) 986If set to 0, disables the use of phase inversion for intensity stereo, 987improving the quality of mono downmixes, but slightly reducing normal stereo 988quality. The default is 1 (phase inversion enabled). 989 990@end table 991 992@anchor{libshine} 993@section libshine 994 995Shine Fixed-Point MP3 encoder wrapper. 996 997Shine is a fixed-point MP3 encoder. It has a far better performance on 998platforms without an FPU, e.g. armel CPUs, and some phones and tablets. 999However, as it is more targeted on performance than quality, it is not on par 1000with LAME and other production-grade encoders quality-wise. Also, according to 1001the project's homepage, this encoder may not be free of bugs as the code was 1002written a long time ago and the project was dead for at least 5 years. 1003 1004This encoder only supports stereo and mono input. This is also CBR-only. 1005 1006The original project (last updated in early 2007) is at 1007@url{http://sourceforge.net/projects/libshine-fxp/}. We only support the 1008updated fork by the Savonet/Liquidsoap project at @url{https://github.com/savonet/shine}. 1009 1010Requires the presence of the libshine headers and library during 1011configuration. You need to explicitly configure the build with 1012@code{--enable-libshine}. 1013 1014See also @ref{libmp3lame}. 1015 1016@subsection Options 1017 1018The following options are supported by the libshine wrapper. The 1019@command{shineenc}-equivalent of the options are listed in parentheses. 1020 1021@table @option 1022@item b (@emph{-b}) 1023Set bitrate expressed in bits/s for CBR. @command{shineenc} @option{-b} option 1024is expressed in kilobits/s. 1025 1026@end table 1027 1028@section libtwolame 1029 1030TwoLAME MP2 encoder wrapper. 1031 1032Requires the presence of the libtwolame headers and library during 1033configuration. You need to explicitly configure the build with 1034@code{--enable-libtwolame}. 1035 1036@subsection Options 1037 1038The following options are supported by the libtwolame wrapper. The 1039@command{twolame}-equivalent options follow the FFmpeg ones and are in 1040parentheses. 1041 1042@table @option 1043@item b (@emph{-b}) 1044Set bitrate expressed in bits/s for CBR. @command{twolame} @option{b} 1045option is expressed in kilobits/s. Default value is 128k. 1046 1047@item q (@emph{-V}) 1048Set quality for experimental VBR support. Maximum value range is 1049from -50 to 50, useful range is from -10 to 10. The higher the 1050value, the better the quality. This option is valid only using the 1051@command{ffmpeg} command-line tool. For library interface users, 1052use @option{global_quality}. 1053 1054@item mode (@emph{--mode}) 1055Set the mode of the resulting audio. Possible values: 1056 1057@table @samp 1058@item auto 1059Choose mode automatically based on the input. This is the default. 1060@item stereo 1061Stereo 1062@item joint_stereo 1063Joint stereo 1064@item dual_channel 1065Dual channel 1066@item mono 1067Mono 1068@end table 1069 1070@item psymodel (@emph{--psyc-mode}) 1071Set psychoacoustic model to use in encoding. The argument must be 1072an integer between -1 and 4, inclusive. The higher the value, the 1073better the quality. The default value is 3. 1074 1075@item energy_levels (@emph{--energy}) 1076Enable energy levels extensions when set to 1. The default value is 10770 (disabled). 1078 1079@item error_protection (@emph{--protect}) 1080Enable CRC error protection when set to 1. The default value is 0 1081(disabled). 1082 1083@item copyright (@emph{--copyright}) 1084Set MPEG audio copyright flag when set to 1. The default value is 0 1085(disabled). 1086 1087@item original (@emph{--original}) 1088Set MPEG audio original flag when set to 1. The default value is 0 1089(disabled). 1090 1091@end table 1092 1093@section libvo-amrwbenc 1094 1095VisualOn Adaptive Multi-Rate Wideband encoder. 1096 1097Requires the presence of the libvo-amrwbenc headers and library during 1098configuration. You need to explicitly configure the build with 1099@code{--enable-libvo-amrwbenc --enable-version3}. 1100 1101This is a mono-only encoder. Officially it only supports 16000Hz sample 1102rate, but you can override it by setting @option{strict} to 1103@samp{unofficial} or lower. 1104 1105@subsection Options 1106 1107@table @option 1108 1109@item b 1110Set bitrate in bits/s. Only the following bitrates are supported, otherwise 1111libavcodec will round to the nearest valid bitrate. 1112 1113@table @samp 1114@item 6600 1115@item 8850 1116@item 12650 1117@item 14250 1118@item 15850 1119@item 18250 1120@item 19850 1121@item 23050 1122@item 23850 1123@end table 1124 1125@item dtx 1126Allow discontinuous transmission (generate comfort noise) when set to 1. The 1127default value is 0 (disabled). 1128 1129@end table 1130 1131@section libvorbis 1132 1133libvorbis encoder wrapper. 1134 1135Requires the presence of the libvorbisenc headers and library during 1136configuration. You need to explicitly configure the build with 1137@code{--enable-libvorbis}. 1138 1139@subsection Options 1140 1141The following options are supported by the libvorbis wrapper. The 1142@command{oggenc}-equivalent of the options are listed in parentheses. 1143 1144To get a more accurate and extensive documentation of the libvorbis 1145options, consult the libvorbisenc's and @command{oggenc}'s documentations. 1146See @url{http://xiph.org/vorbis/}, 1147@url{http://wiki.xiph.org/Vorbis-tools}, and oggenc(1). 1148 1149@table @option 1150@item b (@emph{-b}) 1151Set bitrate expressed in bits/s for ABR. @command{oggenc} @option{-b} is 1152expressed in kilobits/s. 1153 1154@item q (@emph{-q}) 1155Set constant quality setting for VBR. The value should be a float 1156number in the range of -1.0 to 10.0. The higher the value, the better 1157the quality. The default value is @samp{3.0}. 1158 1159This option is valid only using the @command{ffmpeg} command-line tool. 1160For library interface users, use @option{global_quality}. 1161 1162@item cutoff (@emph{--advanced-encode-option lowpass_frequency=N}) 1163Set cutoff bandwidth in Hz, a value of 0 disables cutoff. @command{oggenc}'s 1164related option is expressed in kHz. The default value is @samp{0} (cutoff 1165disabled). 1166 1167@item minrate (@emph{-m}) 1168Set minimum bitrate expressed in bits/s. @command{oggenc} @option{-m} is 1169expressed in kilobits/s. 1170 1171@item maxrate (@emph{-M}) 1172Set maximum bitrate expressed in bits/s. @command{oggenc} @option{-M} is 1173expressed in kilobits/s. This only has effect on ABR mode. 1174 1175@item iblock (@emph{--advanced-encode-option impulse_noisetune=N}) 1176Set noise floor bias for impulse blocks. The value is a float number from 1177-15.0 to 0.0. A negative bias instructs the encoder to pay special attention 1178to the crispness of transients in the encoded audio. The tradeoff for better 1179transient response is a higher bitrate. 1180 1181@end table 1182 1183@anchor{libwavpack} 1184@section libwavpack 1185 1186A wrapper providing WavPack encoding through libwavpack. 1187 1188Only lossless mode using 32-bit integer samples is supported currently. 1189 1190Requires the presence of the libwavpack headers and library during 1191configuration. You need to explicitly configure the build with 1192@code{--enable-libwavpack}. 1193 1194Note that a libavcodec-native encoder for the WavPack codec exists so users can 1195encode audios with this codec without using this encoder. See @ref{wavpackenc}. 1196 1197@subsection Options 1198 1199@command{wavpack} command line utility's corresponding options are listed in 1200parentheses, if any. 1201 1202@table @option 1203@item frame_size (@emph{--blocksize}) 1204Default is 32768. 1205 1206@item compression_level 1207Set speed vs. compression tradeoff. Acceptable arguments are listed below: 1208 1209@table @samp 1210@item 0 (@emph{-f}) 1211Fast mode. 1212 1213@item 1 1214Normal (default) settings. 1215 1216@item 2 (@emph{-h}) 1217High quality. 1218 1219@item 3 (@emph{-hh}) 1220Very high quality. 1221 1222@item 4-8 (@emph{-hh -x}@var{EXTRAPROC}) 1223Same as @samp{3}, but with extra processing enabled. 1224 1225@samp{4} is the same as @option{-x2} and @samp{8} is the same as @option{-x6}. 1226 1227@end table 1228@end table 1229 1230@anchor{mjpegenc} 1231@section mjpeg 1232 1233Motion JPEG encoder. 1234 1235@subsection Options 1236 1237@table @option 1238@item huffman 1239Set the huffman encoding strategy. Possible values: 1240 1241@table @samp 1242@item default 1243Use the default huffman tables. This is the default strategy. 1244 1245@item optimal 1246Compute and use optimal huffman tables. 1247 1248@end table 1249@end table 1250 1251@anchor{wavpackenc} 1252@section wavpack 1253 1254WavPack lossless audio encoder. 1255 1256This is a libavcodec-native WavPack encoder. There is also an encoder based on 1257libwavpack, but there is virtually no reason to use that encoder. 1258 1259See also @ref{libwavpack}. 1260 1261@subsection Options 1262 1263The equivalent options for @command{wavpack} command line utility are listed in 1264parentheses. 1265 1266@subsubsection Shared options 1267 1268The following shared options are effective for this encoder. Only special notes 1269about this particular encoder will be documented here. For the general meaning 1270of the options, see @ref{codec-options,,the Codec Options chapter}. 1271 1272@table @option 1273@item frame_size (@emph{--blocksize}) 1274For this encoder, the range for this option is between 128 and 131072. Default 1275is automatically decided based on sample rate and number of channel. 1276 1277For the complete formula of calculating default, see 1278@file{libavcodec/wavpackenc.c}. 1279 1280@item compression_level (@emph{-f}, @emph{-h}, @emph{-hh}, and @emph{-x}) 1281This option's syntax is consistent with @ref{libwavpack}'s. 1282@end table 1283 1284@subsubsection Private options 1285 1286@table @option 1287@item joint_stereo (@emph{-j}) 1288Set whether to enable joint stereo. Valid values are: 1289 1290@table @samp 1291@item on (@emph{1}) 1292Force mid/side audio encoding. 1293@item off (@emph{0}) 1294Force left/right audio encoding. 1295@item auto 1296Let the encoder decide automatically. 1297@end table 1298 1299@item optimize_mono 1300Set whether to enable optimization for mono. This option is only effective for 1301non-mono streams. Available values: 1302 1303@table @samp 1304@item on 1305enabled 1306@item off 1307disabled 1308@end table 1309 1310@end table 1311 1312@c man end AUDIO ENCODERS 1313 1314@chapter Video Encoders 1315@c man begin VIDEO ENCODERS 1316 1317A description of some of the currently available video encoders 1318follows. 1319 1320@section Hap 1321 1322Vidvox Hap video encoder. 1323 1324@subsection Options 1325 1326@table @option 1327@item format @var{integer} 1328Specifies the Hap format to encode. 1329 1330@table @option 1331@item hap 1332@item hap_alpha 1333@item hap_q 1334@end table 1335 1336Default value is @option{hap}. 1337 1338@item chunks @var{integer} 1339Specifies the number of chunks to split frames into, between 1 and 64. This 1340permits multithreaded decoding of large frames, potentially at the cost of 1341data-rate. The encoder may modify this value to divide frames evenly. 1342 1343Default value is @var{1}. 1344 1345@item compressor @var{integer} 1346Specifies the second-stage compressor to use. If set to @option{none}, 1347@option{chunks} will be limited to 1, as chunked uncompressed frames offer no 1348benefit. 1349 1350@table @option 1351@item none 1352@item snappy 1353@end table 1354 1355Default value is @option{snappy}. 1356 1357@end table 1358 1359@section jpeg2000 1360 1361The native jpeg 2000 encoder is lossy by default, the @code{-q:v} 1362option can be used to set the encoding quality. Lossless encoding 1363can be selected with @code{-pred 1}. 1364 1365@subsection Options 1366 1367@table @option 1368@item format 1369Can be set to either @code{j2k} or @code{jp2} (the default) that 1370makes it possible to store non-rgb pix_fmts. 1371 1372@end table 1373 1374@section librav1e 1375 1376rav1e AV1 encoder wrapper. 1377 1378Requires the presence of the rav1e headers and library during configuration. 1379You need to explicitly configure the build with @code{--enable-librav1e}. 1380 1381@subsection Options 1382 1383@table @option 1384@item qmax 1385Sets the maximum quantizer to use when using bitrate mode. 1386 1387@item qmin 1388Sets the minimum quantizer to use when using bitrate mode. 1389 1390@item qp 1391Uses quantizer mode to encode at the given quantizer (0-255). 1392 1393@item speed 1394Selects the speed preset (0-10) to encode with. 1395 1396@item tiles 1397Selects how many tiles to encode with. 1398 1399@item tile-rows 1400Selects how many rows of tiles to encode with. 1401 1402@item tile-columns 1403Selects how many columns of tiles to encode with. 1404 1405@item rav1e-params 1406Set rav1e options using a list of @var{key}=@var{value} pairs separated 1407by ":". See @command{rav1e --help} for a list of options. 1408 1409For example to specify librav1e encoding options with @option{-rav1e-params}: 1410 1411@example 1412ffmpeg -i input -c:v librav1e -b:v 500K -rav1e-params speed=5:low_latency=true output.mp4 1413@end example 1414 1415@end table 1416 1417@section libaom-av1 1418 1419libaom AV1 encoder wrapper. 1420 1421Requires the presence of the libaom headers and library during 1422configuration. You need to explicitly configure the build with 1423@code{--enable-libaom}. 1424 1425@subsection Options 1426 1427The wrapper supports the following standard libavcodec options: 1428 1429@table @option 1430 1431@item b 1432Set bitrate target in bits/second. By default this will use 1433variable-bitrate mode. If @option{maxrate} and @option{minrate} are 1434also set to the same value then it will use constant-bitrate mode, 1435otherwise if @option{crf} is set as well then it will use 1436constrained-quality mode. 1437 1438@item g keyint_min 1439Set key frame placement. The GOP size sets the maximum distance between 1440key frames; if zero the output stream will be intra-only. The minimum 1441distance is ignored unless it is the same as the GOP size, in which case 1442key frames will always appear at a fixed interval. Not set by default, 1443so without this option the library has completely free choice about 1444where to place key frames. 1445 1446@item qmin qmax 1447Set minimum/maximum quantisation values. Valid range is from 0 to 63 1448(warning: this does not match the quantiser values actually used by AV1 1449- divide by four to map real quantiser values to this range). Defaults 1450to min/max (no constraint). 1451 1452@item minrate maxrate bufsize rc_init_occupancy 1453Set rate control buffering parameters. Not used if not set - defaults 1454to unconstrained variable bitrate. 1455 1456@item threads 1457Set the number of threads to use while encoding. This may require the 1458@option{tiles} or @option{row-mt} options to also be set to actually 1459use the specified number of threads fully. Defaults to the number of 1460hardware threads supported by the host machine. 1461 1462@item profile 1463Set the encoding profile. Defaults to using the profile which matches 1464the bit depth and chroma subsampling of the input. 1465 1466@end table 1467 1468The wrapper also has some specific options: 1469 1470@table @option 1471 1472@item cpu-used 1473Set the quality/encoding speed tradeoff. Valid range is from 0 to 8, 1474higher numbers indicating greater speed and lower quality. The default 1475value is 1, which will be slow and high quality. 1476 1477@item auto-alt-ref 1478Enable use of alternate reference frames. Defaults to the internal 1479default of the library. 1480 1481@item arnr-max-frames (@emph{frames}) 1482Set altref noise reduction max frame count. Default is -1. 1483 1484@item arnr-strength (@emph{strength}) 1485Set altref noise reduction filter strength. Range is -1 to 6. Default is -1. 1486 1487@item aq-mode (@emph{aq-mode}) 1488Set adaptive quantization mode. Possible values: 1489 1490@table @samp 1491@item none (@emph{0}) 1492Disabled. 1493 1494@item variance (@emph{1}) 1495Variance-based. 1496 1497@item complexity (@emph{2}) 1498Complexity-based. 1499 1500@item cyclic (@emph{3}) 1501Cyclic refresh. 1502@end table 1503 1504@item tune (@emph{tune}) 1505Set the distortion metric the encoder is tuned with. Default is @code{psnr}. 1506 1507@table @samp 1508@item psnr (@emph{0}) 1509 1510@item ssim (@emph{1}) 1511@end table 1512 1513@item lag-in-frames 1514Set the maximum number of frames which the encoder may keep in flight 1515at any one time for lookahead purposes. Defaults to the internal 1516default of the library. 1517 1518@item error-resilience 1519Enable error resilience features: 1520@table @option 1521@item default 1522Improve resilience against losses of whole frames. 1523@end table 1524Not enabled by default. 1525 1526@item crf 1527Set the quality/size tradeoff for constant-quality (no bitrate target) 1528and constrained-quality (with maximum bitrate target) modes. Valid 1529range is 0 to 63, higher numbers indicating lower quality and smaller 1530output size. Only used if set; by default only the bitrate target is 1531used. 1532 1533@item static-thresh 1534Set a change threshold on blocks below which they will be skipped by 1535the encoder. Defined in arbitrary units as a nonnegative integer, 1536defaulting to zero (no blocks are skipped). 1537 1538@item drop-threshold 1539Set a threshold for dropping frames when close to rate control bounds. 1540Defined as a percentage of the target buffer - when the rate control 1541buffer falls below this percentage, frames will be dropped until it 1542has refilled above the threshold. Defaults to zero (no frames are 1543dropped). 1544 1545@item denoise-noise-level (@emph{level}) 1546Amount of noise to be removed for grain synthesis. Grain synthesis is disabled if 1547this option is not set or set to 0. 1548 1549@item denoise-block-size (@emph{pixels}) 1550Block size used for denoising for grain synthesis. If not set, AV1 codec 1551uses the default value of 32. 1552 1553@item undershoot-pct (@emph{pct}) 1554Set datarate undershoot (min) percentage of the target bitrate. Range is -1 to 100. 1555Default is -1. 1556 1557@item overshoot-pct (@emph{pct}) 1558Set datarate overshoot (max) percentage of the target bitrate. Range is -1 to 1000. 1559Default is -1. 1560 1561@item minsection-pct (@emph{pct}) 1562Minimum percentage variation of the GOP bitrate from the target bitrate. If minsection-pct 1563is not set, the libaomenc wrapper computes it as follows: @code{(minrate * 100 / bitrate)}. 1564Range is -1 to 100. Default is -1 (unset). 1565 1566@item maxsection-pct (@emph{pct}) 1567Maximum percentage variation of the GOP bitrate from the target bitrate. If maxsection-pct 1568is not set, the libaomenc wrapper computes it as follows: @code{(maxrate * 100 / bitrate)}. 1569Range is -1 to 5000. Default is -1 (unset). 1570 1571@item frame-parallel (@emph{boolean}) 1572Enable frame parallel decodability features. Default is true. 1573 1574@item tiles 1575Set the number of tiles to encode the input video with, as columns x 1576rows. Larger numbers allow greater parallelism in both encoding and 1577decoding, but may decrease coding efficiency. Defaults to the minimum 1578number of tiles required by the size of the input video (this is 1x1 1579(that is, a single tile) for sizes up to and including 4K). 1580 1581@item tile-columns tile-rows 1582Set the number of tiles as log2 of the number of tile rows and columns. 1583Provided for compatibility with libvpx/VP9. 1584 1585@item row-mt (Requires libaom >= 1.0.0-759-g90a15f4f2) 1586Enable row based multi-threading. Disabled by default. 1587 1588@item enable-cdef (@emph{boolean}) 1589Enable Constrained Directional Enhancement Filter. The libaom-av1 1590encoder enables CDEF by default. 1591 1592@item enable-restoration (@emph{boolean}) 1593Enable Loop Restoration Filter. Default is true for libaom-av1. 1594 1595@item enable-global-motion (@emph{boolean}) 1596Enable the use of global motion for block prediction. Default is true. 1597 1598@item enable-intrabc (@emph{boolean}) 1599Enable block copy mode for intra block prediction. This mode is 1600useful for screen content. Default is true. 1601 1602@end table 1603 1604@section libkvazaar 1605 1606Kvazaar H.265/HEVC encoder. 1607 1608Requires the presence of the libkvazaar headers and library during 1609configuration. You need to explicitly configure the build with 1610@option{--enable-libkvazaar}. 1611 1612@subsection Options 1613 1614@table @option 1615 1616@item b 1617Set target video bitrate in bit/s and enable rate control. 1618 1619@item kvazaar-params 1620Set kvazaar parameters as a list of @var{name}=@var{value} pairs separated 1621by commas (,). See kvazaar documentation for a list of options. 1622 1623@end table 1624 1625@section libopenh264 1626 1627Cisco libopenh264 H.264/MPEG-4 AVC encoder wrapper. 1628 1629This encoder requires the presence of the libopenh264 headers and 1630library during configuration. You need to explicitly configure the 1631build with @code{--enable-libopenh264}. The library is detected using 1632@command{pkg-config}. 1633 1634For more information about the library see 1635@url{http://www.openh264.org}. 1636 1637@subsection Options 1638 1639The following FFmpeg global options affect the configurations of the 1640libopenh264 encoder. 1641 1642@table @option 1643@item b 1644Set the bitrate (as a number of bits per second). 1645 1646@item g 1647Set the GOP size. 1648 1649@item maxrate 1650Set the max bitrate (as a number of bits per second). 1651 1652@item flags +global_header 1653Set global header in the bitstream. 1654 1655@item slices 1656Set the number of slices, used in parallelized encoding. Default value 1657is 0. This is only used when @option{slice_mode} is set to 1658@samp{fixed}. 1659 1660@item slice_mode 1661Set slice mode. Can assume one of the following possible values: 1662 1663@table @samp 1664@item fixed 1665a fixed number of slices 1666@item rowmb 1667one slice per row of macroblocks 1668@item auto 1669automatic number of slices according to number of threads 1670@item dyn 1671dynamic slicing 1672@end table 1673 1674Default value is @samp{auto}. 1675 1676@item loopfilter 1677Enable loop filter, if set to 1 (automatically enabled). To disable 1678set a value of 0. 1679 1680@item profile 1681Set profile restrictions. If set to the value of @samp{main} enable 1682CABAC (set the @code{SEncParamExt.iEntropyCodingModeFlag} flag to 1). 1683 1684@item max_nal_size 1685Set maximum NAL size in bytes. 1686 1687@item allow_skip_frames 1688Allow skipping frames to hit the target bitrate if set to 1. 1689@end table 1690 1691@section libtheora 1692 1693libtheora Theora encoder wrapper. 1694 1695Requires the presence of the libtheora headers and library during 1696configuration. You need to explicitly configure the build with 1697@code{--enable-libtheora}. 1698 1699For more information about the libtheora project see 1700@url{http://www.theora.org/}. 1701 1702@subsection Options 1703 1704The following global options are mapped to internal libtheora options 1705which affect the quality and the bitrate of the encoded stream. 1706 1707@table @option 1708@item b 1709Set the video bitrate in bit/s for CBR (Constant Bit Rate) mode. In 1710case VBR (Variable Bit Rate) mode is enabled this option is ignored. 1711 1712@item flags 1713Used to enable constant quality mode (VBR) encoding through the 1714@option{qscale} flag, and to enable the @code{pass1} and @code{pass2} 1715modes. 1716 1717@item g 1718Set the GOP size. 1719 1720@item global_quality 1721Set the global quality as an integer in lambda units. 1722 1723Only relevant when VBR mode is enabled with @code{flags +qscale}. The 1724value is converted to QP units by dividing it by @code{FF_QP2LAMBDA}, 1725clipped in the [0 - 10] range, and then multiplied by 6.3 to get a 1726value in the native libtheora range [0-63]. A higher value corresponds 1727to a higher quality. 1728 1729@item q 1730Enable VBR mode when set to a non-negative value, and set constant 1731quality value as a double floating point value in QP units. 1732 1733The value is clipped in the [0-10] range, and then multiplied by 6.3 1734to get a value in the native libtheora range [0-63]. 1735 1736This option is valid only using the @command{ffmpeg} command-line 1737tool. For library interface users, use @option{global_quality}. 1738@end table 1739 1740@subsection Examples 1741 1742@itemize 1743@item 1744Set maximum constant quality (VBR) encoding with @command{ffmpeg}: 1745@example 1746ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg 1747@end example 1748 1749@item 1750Use @command{ffmpeg} to convert a CBR 1000 kbps Theora video stream: 1751@example 1752ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg 1753@end example 1754@end itemize 1755 1756@section libvpx 1757 1758VP8/VP9 format supported through libvpx. 1759 1760Requires the presence of the libvpx headers and library during configuration. 1761You need to explicitly configure the build with @code{--enable-libvpx}. 1762 1763@subsection Options 1764 1765The following options are supported by the libvpx wrapper. The 1766@command{vpxenc}-equivalent options or values are listed in parentheses 1767for easy migration. 1768 1769To reduce the duplication of documentation, only the private options 1770and some others requiring special attention are documented here. For 1771the documentation of the undocumented generic options, see 1772@ref{codec-options,,the Codec Options chapter}. 1773 1774To get more documentation of the libvpx options, invoke the command 1775@command{ffmpeg -h encoder=libvpx}, @command{ffmpeg -h encoder=libvpx-vp9} or 1776@command{vpxenc --help}. Further information is available in the libvpx API 1777documentation. 1778 1779@table @option 1780 1781@item b (@emph{target-bitrate}) 1782Set bitrate in bits/s. Note that FFmpeg's @option{b} option is 1783expressed in bits/s, while @command{vpxenc}'s @option{target-bitrate} is in 1784kilobits/s. 1785 1786@item g (@emph{kf-max-dist}) 1787 1788@item keyint_min (@emph{kf-min-dist}) 1789 1790@item qmin (@emph{min-q}) 1791 1792@item qmax (@emph{max-q}) 1793 1794@item bufsize (@emph{buf-sz}, @emph{buf-optimal-sz}) 1795Set ratecontrol buffer size (in bits). Note @command{vpxenc}'s options are 1796specified in milliseconds, the libvpx wrapper converts this value as follows: 1797@code{buf-sz = bufsize * 1000 / bitrate}, 1798@code{buf-optimal-sz = bufsize * 1000 / bitrate * 5 / 6}. 1799 1800@item rc_init_occupancy (@emph{buf-initial-sz}) 1801Set number of bits which should be loaded into the rc buffer before decoding 1802starts. Note @command{vpxenc}'s option is specified in milliseconds, the libvpx 1803wrapper converts this value as follows: 1804@code{rc_init_occupancy * 1000 / bitrate}. 1805 1806@item undershoot-pct 1807Set datarate undershoot (min) percentage of the target bitrate. 1808 1809@item overshoot-pct 1810Set datarate overshoot (max) percentage of the target bitrate. 1811 1812@item skip_threshold (@emph{drop-frame}) 1813 1814@item qcomp (@emph{bias-pct}) 1815 1816@item maxrate (@emph{maxsection-pct}) 1817Set GOP max bitrate in bits/s. Note @command{vpxenc}'s option is specified as a 1818percentage of the target bitrate, the libvpx wrapper converts this value as 1819follows: @code{(maxrate * 100 / bitrate)}. 1820 1821@item minrate (@emph{minsection-pct}) 1822Set GOP min bitrate in bits/s. Note @command{vpxenc}'s option is specified as a 1823percentage of the target bitrate, the libvpx wrapper converts this value as 1824follows: @code{(minrate * 100 / bitrate)}. 1825 1826@item minrate, maxrate, b @emph{end-usage=cbr} 1827@code{(minrate == maxrate == bitrate)}. 1828 1829@item crf (@emph{end-usage=cq}, @emph{cq-level}) 1830 1831@item tune (@emph{tune}) 1832@table @samp 1833@item psnr (@emph{psnr}) 1834@item ssim (@emph{ssim}) 1835@end table 1836 1837@item quality, deadline (@emph{deadline}) 1838@table @samp 1839@item best 1840Use best quality deadline. Poorly named and quite slow, this option should be 1841avoided as it may give worse quality output than good. 1842@item good 1843Use good quality deadline. This is a good trade-off between speed and quality 1844when used with the @option{cpu-used} option. 1845@item realtime 1846Use realtime quality deadline. 1847@end table 1848 1849@item speed, cpu-used (@emph{cpu-used}) 1850Set quality/speed ratio modifier. Higher values speed up the encode at the cost 1851of quality. 1852 1853@item nr (@emph{noise-sensitivity}) 1854 1855@item static-thresh 1856Set a change threshold on blocks below which they will be skipped by the 1857encoder. 1858 1859@item slices (@emph{token-parts}) 1860Note that FFmpeg's @option{slices} option gives the total number of partitions, 1861while @command{vpxenc}'s @option{token-parts} is given as 1862@code{log2(partitions)}. 1863 1864@item max-intra-rate 1865Set maximum I-frame bitrate as a percentage of the target bitrate. A value of 0 1866means unlimited. 1867 1868@item force_key_frames 1869@code{VPX_EFLAG_FORCE_KF} 1870 1871@item Alternate reference frame related 1872@table @option 1873@item auto-alt-ref 1874Enable use of alternate reference frames (2-pass only). 1875Values greater than 1 enable multi-layer alternate reference frames (VP9 only). 1876@item arnr-maxframes 1877Set altref noise reduction max frame count. 1878@item arnr-type 1879Set altref noise reduction filter type: backward, forward, centered. 1880@item arnr-strength 1881Set altref noise reduction filter strength. 1882@item rc-lookahead, lag-in-frames (@emph{lag-in-frames}) 1883Set number of frames to look ahead for frametype and ratecontrol. 1884@end table 1885 1886@item error-resilient 1887Enable error resiliency features. 1888 1889@item sharpness @var{integer} 1890Increase sharpness at the expense of lower PSNR. 1891The valid range is [0, 7]. 1892 1893@item ts-parameters 1894Sets the temporal scalability configuration using a :-separated list of 1895key=value pairs. For example, to specify temporal scalability parameters 1896with @code{ffmpeg}: 1897@example 1898ffmpeg -i INPUT -c:v libvpx -ts-parameters ts_number_layers=3:\ 1899ts_target_bitrate=250,500,1000:ts_rate_decimator=4,2,1:\ 1900ts_periodicity=4:ts_layer_id=0,2,1,2:ts_layering_mode=3 OUTPUT 1901@end example 1902Below is a brief explanation of each of the parameters, please 1903refer to @code{struct vpx_codec_enc_cfg} in @code{vpx/vpx_encoder.h} for more 1904details. 1905@table @option 1906@item ts_number_layers 1907Number of temporal coding layers. 1908@item ts_target_bitrate 1909Target bitrate for each temporal layer (in kbps). 1910(bitrate should be inclusive of the lower temporal layer). 1911@item ts_rate_decimator 1912Frame rate decimation factor for each temporal layer. 1913@item ts_periodicity 1914Length of the sequence defining frame temporal layer membership. 1915@item ts_layer_id 1916Template defining the membership of frames to temporal layers. 1917@item ts_layering_mode 1918(optional) Selecting the temporal structure from a set of pre-defined temporal layering modes. 1919Currently supports the following options. 1920@table @option 1921@item 0 1922No temporal layering flags are provided internally, 1923relies on flags being passed in using @code{metadata} field in @code{AVFrame} 1924with following keys. 1925@table @option 1926@item vp8-flags 1927Sets the flags passed into the encoder to indicate the referencing scheme for 1928the current frame. 1929Refer to function @code{vpx_codec_encode} in @code{vpx/vpx_encoder.h} for more 1930details. 1931@item temporal_id 1932Explicitly sets the temporal id of the current frame to encode. 1933@end table 1934@item 2 1935Two temporal layers. 0-1... 1936@item 3 1937Three temporal layers. 0-2-1-2...; with single reference frame. 1938@item 4 1939Same as option "3", except there is a dependency between 1940the two temporal layer 2 frames within the temporal period. 1941@end table 1942@end table 1943 1944@item VP9-specific options 1945@table @option 1946@item lossless 1947Enable lossless mode. 1948@item tile-columns 1949Set number of tile columns to use. Note this is given as 1950@code{log2(tile_columns)}. For example, 8 tile columns would be requested by 1951setting the @option{tile-columns} option to 3. 1952@item tile-rows 1953Set number of tile rows to use. Note this is given as @code{log2(tile_rows)}. 1954For example, 4 tile rows would be requested by setting the @option{tile-rows} 1955option to 2. 1956@item frame-parallel 1957Enable frame parallel decodability features. 1958@item aq-mode 1959Set adaptive quantization mode (0: off (default), 1: variance 2: complexity, 3: 1960cyclic refresh, 4: equator360). 1961@item colorspace @emph{color-space} 1962Set input color space. The VP9 bitstream supports signaling the following 1963colorspaces: 1964@table @option 1965@item @samp{rgb} @emph{sRGB} 1966@item @samp{bt709} @emph{bt709} 1967@item @samp{unspecified} @emph{unknown} 1968@item @samp{bt470bg} @emph{bt601} 1969@item @samp{smpte170m} @emph{smpte170} 1970@item @samp{smpte240m} @emph{smpte240} 1971@item @samp{bt2020_ncl} @emph{bt2020} 1972@end table 1973@item row-mt @var{boolean} 1974Enable row based multi-threading. 1975@item tune-content 1976Set content type: default (0), screen (1), film (2). 1977@item corpus-complexity 1978Corpus VBR mode is a variant of standard VBR where the complexity distribution 1979midpoint is passed in rather than calculated for a specific clip or chunk. 1980 1981The valid range is [0, 10000]. 0 (default) uses standard VBR. 1982@item enable-tpl @var{boolean} 1983Enable temporal dependency model. 1984@end table 1985 1986@end table 1987 1988For more information about libvpx see: 1989@url{http://www.webmproject.org/} 1990 1991@section libwebp 1992 1993libwebp WebP Image encoder wrapper 1994 1995libwebp is Google's official encoder for WebP images. It can encode in either 1996lossy or lossless mode. Lossy images are essentially a wrapper around a VP8 1997frame. Lossless images are a separate codec developed by Google. 1998 1999@subsection Pixel Format 2000 2001Currently, libwebp only supports YUV420 for lossy and RGB for lossless due 2002to limitations of the format and libwebp. Alpha is supported for either mode. 2003Because of API limitations, if RGB is passed in when encoding lossy or YUV is 2004passed in for encoding lossless, the pixel format will automatically be 2005converted using functions from libwebp. This is not ideal and is done only for 2006convenience. 2007 2008@subsection Options 2009 2010@table @option 2011 2012@item -lossless @var{boolean} 2013Enables/Disables use of lossless mode. Default is 0. 2014 2015@item -compression_level @var{integer} 2016For lossy, this is a quality/speed tradeoff. Higher values give better quality 2017for a given size at the cost of increased encoding time. For lossless, this is 2018a size/speed tradeoff. Higher values give smaller size at the cost of increased 2019encoding time. More specifically, it controls the number of extra algorithms 2020and compression tools used, and varies the combination of these tools. This 2021maps to the @var{method} option in libwebp. The valid range is 0 to 6. 2022Default is 4. 2023 2024@item -qscale @var{float} 2025For lossy encoding, this controls image quality, 0 to 100. For lossless 2026encoding, this controls the effort and time spent at compressing more. The 2027default value is 75. Note that for usage via libavcodec, this option is called 2028@var{global_quality} and must be multiplied by @var{FF_QP2LAMBDA}. 2029 2030@item -preset @var{type} 2031Configuration preset. This does some automatic settings based on the general 2032type of the image. 2033@table @option 2034@item none 2035Do not use a preset. 2036@item default 2037Use the encoder default. 2038@item picture 2039Digital picture, like portrait, inner shot 2040@item photo 2041Outdoor photograph, with natural lighting 2042@item drawing 2043Hand or line drawing, with high-contrast details 2044@item icon 2045Small-sized colorful images 2046@item text 2047Text-like 2048@end table 2049 2050@end table 2051 2052@section libx264, libx264rgb 2053 2054x264 H.264/MPEG-4 AVC encoder wrapper. 2055 2056This encoder requires the presence of the libx264 headers and library 2057during configuration. You need to explicitly configure the build with 2058@code{--enable-libx264}. 2059 2060libx264 supports an impressive number of features, including 8x8 and 20614x4 adaptive spatial transform, adaptive B-frame placement, CAVLC/CABAC 2062entropy coding, interlacing (MBAFF), lossless mode, psy optimizations 2063for detail retention (adaptive quantization, psy-RD, psy-trellis). 2064 2065Many libx264 encoder options are mapped to FFmpeg global codec 2066options, while unique encoder options are provided through private 2067options. Additionally the @option{x264opts} and @option{x264-params} 2068private options allows one to pass a list of key=value tuples as accepted 2069by the libx264 @code{x264_param_parse} function. 2070 2071The x264 project website is at 2072@url{http://www.videolan.org/developers/x264.html}. 2073 2074The libx264rgb encoder is the same as libx264, except it accepts packed RGB 2075pixel formats as input instead of YUV. 2076 2077@subsection Supported Pixel Formats 2078 2079x264 supports 8- to 10-bit color spaces. The exact bit depth is controlled at 2080x264's configure time. FFmpeg only supports one bit depth in one particular 2081build. In other words, it is not possible to build one FFmpeg with multiple 2082versions of x264 with different bit depths. 2083 2084@subsection Options 2085 2086The following options are supported by the libx264 wrapper. The 2087@command{x264}-equivalent options or values are listed in parentheses 2088for easy migration. 2089 2090To reduce the duplication of documentation, only the private options 2091and some others requiring special attention are documented here. For 2092the documentation of the undocumented generic options, see 2093@ref{codec-options,,the Codec Options chapter}. 2094 2095To get a more accurate and extensive documentation of the libx264 2096options, invoke the command @command{x264 --fullhelp} or consult 2097the libx264 documentation. 2098 2099@table @option 2100@item b (@emph{bitrate}) 2101Set bitrate in bits/s. Note that FFmpeg's @option{b} option is 2102expressed in bits/s, while @command{x264}'s @option{bitrate} is in 2103kilobits/s. 2104 2105@item bf (@emph{bframes}) 2106 2107@item g (@emph{keyint}) 2108 2109@item qmin (@emph{qpmin}) 2110Minimum quantizer scale. 2111 2112@item qmax (@emph{qpmax}) 2113Maximum quantizer scale. 2114 2115@item qdiff (@emph{qpstep}) 2116Maximum difference between quantizer scales. 2117 2118@item qblur (@emph{qblur}) 2119Quantizer curve blur 2120 2121@item qcomp (@emph{qcomp}) 2122Quantizer curve compression factor 2123 2124@item refs (@emph{ref}) 2125Number of reference frames each P-frame can use. The range is from @var{0-16}. 2126 2127@item sc_threshold (@emph{scenecut}) 2128Sets the threshold for the scene change detection. 2129 2130@item trellis (@emph{trellis}) 2131Performs Trellis quantization to increase efficiency. Enabled by default. 2132 2133@item nr (@emph{nr}) 2134 2135@item me_range (@emph{merange}) 2136Maximum range of the motion search in pixels. 2137 2138@item me_method (@emph{me}) 2139Set motion estimation method. Possible values in the decreasing order 2140of speed: 2141 2142@table @samp 2143@item dia (@emph{dia}) 2144@item epzs (@emph{dia}) 2145Diamond search with radius 1 (fastest). @samp{epzs} is an alias for 2146@samp{dia}. 2147@item hex (@emph{hex}) 2148Hexagonal search with radius 2. 2149@item umh (@emph{umh}) 2150Uneven multi-hexagon search. 2151@item esa (@emph{esa}) 2152Exhaustive search. 2153@item tesa (@emph{tesa}) 2154Hadamard exhaustive search (slowest). 2155@end table 2156 2157@item forced-idr 2158Normally, when forcing a I-frame type, the encoder can select any type 2159of I-frame. This option forces it to choose an IDR-frame. 2160 2161@item subq (@emph{subme}) 2162Sub-pixel motion estimation method. 2163 2164@item b_strategy (@emph{b-adapt}) 2165Adaptive B-frame placement decision algorithm. Use only on first-pass. 2166 2167@item keyint_min (@emph{min-keyint}) 2168Minimum GOP size. 2169 2170@item coder 2171Set entropy encoder. Possible values: 2172 2173@table @samp 2174@item ac 2175Enable CABAC. 2176 2177@item vlc 2178Enable CAVLC and disable CABAC. It generates the same effect as 2179@command{x264}'s @option{--no-cabac} option. 2180@end table 2181 2182@item cmp 2183Set full pixel motion estimation comparison algorithm. Possible values: 2184 2185@table @samp 2186@item chroma 2187Enable chroma in motion estimation. 2188 2189@item sad 2190Ignore chroma in motion estimation. It generates the same effect as 2191@command{x264}'s @option{--no-chroma-me} option. 2192@end table 2193 2194@item threads (@emph{threads}) 2195Number of encoding threads. 2196 2197@item thread_type 2198Set multithreading technique. Possible values: 2199 2200@table @samp 2201@item slice 2202Slice-based multithreading. It generates the same effect as 2203@command{x264}'s @option{--sliced-threads} option. 2204@item frame 2205Frame-based multithreading. 2206@end table 2207 2208@item flags 2209Set encoding flags. It can be used to disable closed GOP and enable 2210open GOP by setting it to @code{-cgop}. The result is similar to 2211the behavior of @command{x264}'s @option{--open-gop} option. 2212 2213@item rc_init_occupancy (@emph{vbv-init}) 2214 2215@item preset (@emph{preset}) 2216Set the encoding preset. 2217 2218@item tune (@emph{tune}) 2219Set tuning of the encoding params. 2220 2221@item profile (@emph{profile}) 2222Set profile restrictions. 2223 2224@item fastfirstpass 2225Enable fast settings when encoding first pass, when set to 1. When set 2226to 0, it has the same effect of @command{x264}'s 2227@option{--slow-firstpass} option. 2228 2229@item crf (@emph{crf}) 2230Set the quality for constant quality mode. 2231 2232@item crf_max (@emph{crf-max}) 2233In CRF mode, prevents VBV from lowering quality beyond this point. 2234 2235@item qp (@emph{qp}) 2236Set constant quantization rate control method parameter. 2237 2238@item aq-mode (@emph{aq-mode}) 2239Set AQ method. Possible values: 2240 2241@table @samp 2242@item none (@emph{0}) 2243Disabled. 2244 2245@item variance (@emph{1}) 2246Variance AQ (complexity mask). 2247 2248@item autovariance (@emph{2}) 2249Auto-variance AQ (experimental). 2250@end table 2251 2252@item aq-strength (@emph{aq-strength}) 2253Set AQ strength, reduce blocking and blurring in flat and textured areas. 2254 2255@item psy 2256Use psychovisual optimizations when set to 1. When set to 0, it has the 2257same effect as @command{x264}'s @option{--no-psy} option. 2258 2259@item psy-rd (@emph{psy-rd}) 2260Set strength of psychovisual optimization, in 2261@var{psy-rd}:@var{psy-trellis} format. 2262 2263@item rc-lookahead (@emph{rc-lookahead}) 2264Set number of frames to look ahead for frametype and ratecontrol. 2265 2266@item weightb 2267Enable weighted prediction for B-frames when set to 1. When set to 0, 2268it has the same effect as @command{x264}'s @option{--no-weightb} option. 2269 2270@item weightp (@emph{weightp}) 2271Set weighted prediction method for P-frames. Possible values: 2272 2273@table @samp 2274@item none (@emph{0}) 2275Disabled 2276@item simple (@emph{1}) 2277Enable only weighted refs 2278@item smart (@emph{2}) 2279Enable both weighted refs and duplicates 2280@end table 2281 2282@item ssim (@emph{ssim}) 2283Enable calculation and printing SSIM stats after the encoding. 2284 2285@item intra-refresh (@emph{intra-refresh}) 2286Enable the use of Periodic Intra Refresh instead of IDR frames when set 2287to 1. 2288 2289@item avcintra-class (@emph{class}) 2290Configure the encoder to generate AVC-Intra. 2291Valid values are 50,100 and 200 2292 2293@item bluray-compat (@emph{bluray-compat}) 2294Configure the encoder to be compatible with the bluray standard. 2295It is a shorthand for setting "bluray-compat=1 force-cfr=1". 2296 2297@item b-bias (@emph{b-bias}) 2298Set the influence on how often B-frames are used. 2299 2300@item b-pyramid (@emph{b-pyramid}) 2301Set method for keeping of some B-frames as references. Possible values: 2302 2303@table @samp 2304@item none (@emph{none}) 2305Disabled. 2306@item strict (@emph{strict}) 2307Strictly hierarchical pyramid. 2308@item normal (@emph{normal}) 2309Non-strict (not Blu-ray compatible). 2310@end table 2311 2312@item mixed-refs 2313Enable the use of one reference per partition, as opposed to one 2314reference per macroblock when set to 1. When set to 0, it has the 2315same effect as @command{x264}'s @option{--no-mixed-refs} option. 2316 2317@item 8x8dct 2318Enable adaptive spatial transform (high profile 8x8 transform) 2319when set to 1. When set to 0, it has the same effect as 2320@command{x264}'s @option{--no-8x8dct} option. 2321 2322@item fast-pskip 2323Enable early SKIP detection on P-frames when set to 1. When set 2324to 0, it has the same effect as @command{x264}'s 2325@option{--no-fast-pskip} option. 2326 2327@item aud (@emph{aud}) 2328Enable use of access unit delimiters when set to 1. 2329 2330@item mbtree 2331Enable use macroblock tree ratecontrol when set to 1. When set 2332to 0, it has the same effect as @command{x264}'s 2333@option{--no-mbtree} option. 2334 2335@item deblock (@emph{deblock}) 2336Set loop filter parameters, in @var{alpha}:@var{beta} form. 2337 2338@item cplxblur (@emph{cplxblur}) 2339Set fluctuations reduction in QP (before curve compression). 2340 2341@item partitions (@emph{partitions}) 2342Set partitions to consider as a comma-separated list of. Possible 2343values in the list: 2344 2345@table @samp 2346@item p8x8 23478x8 P-frame partition. 2348@item p4x4 23494x4 P-frame partition. 2350@item b8x8 23514x4 B-frame partition. 2352@item i8x8 23538x8 I-frame partition. 2354@item i4x4 23554x4 I-frame partition. 2356(Enabling @samp{p4x4} requires @samp{p8x8} to be enabled. Enabling 2357@samp{i8x8} requires adaptive spatial transform (@option{8x8dct} 2358option) to be enabled.) 2359@item none (@emph{none}) 2360Do not consider any partitions. 2361@item all (@emph{all}) 2362Consider every partition. 2363@end table 2364 2365@item direct-pred (@emph{direct}) 2366Set direct MV prediction mode. Possible values: 2367 2368@table @samp 2369@item none (@emph{none}) 2370Disable MV prediction. 2371@item spatial (@emph{spatial}) 2372Enable spatial predicting. 2373@item temporal (@emph{temporal}) 2374Enable temporal predicting. 2375@item auto (@emph{auto}) 2376Automatically decided. 2377@end table 2378 2379@item slice-max-size (@emph{slice-max-size}) 2380Set the limit of the size of each slice in bytes. If not specified 2381but RTP payload size (@option{ps}) is specified, that is used. 2382 2383@item stats (@emph{stats}) 2384Set the file name for multi-pass stats. 2385 2386@item nal-hrd (@emph{nal-hrd}) 2387Set signal HRD information (requires @option{vbv-bufsize} to be set). 2388Possible values: 2389 2390@table @samp 2391@item none (@emph{none}) 2392Disable HRD information signaling. 2393@item vbr (@emph{vbr}) 2394Variable bit rate. 2395@item cbr (@emph{cbr}) 2396Constant bit rate (not allowed in MP4 container). 2397@end table 2398 2399@item x264opts (N.A.) 2400Set any x264 option, see @command{x264 --fullhelp} for a list. 2401 2402Argument is a list of @var{key}=@var{value} couples separated by 2403":". In @var{filter} and @var{psy-rd} options that use ":" as a separator 2404themselves, use "," instead. They accept it as well since long ago but this 2405is kept undocumented for some reason. 2406 2407For example to specify libx264 encoding options with @command{ffmpeg}: 2408@example 2409ffmpeg -i foo.mpg -c:v libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv 2410@end example 2411 2412@item a53cc @var{boolean} 2413Import closed captions (which must be ATSC compatible format) into output. 2414Only the mpeg2 and h264 decoders provide these. Default is 1 (on). 2415 2416@item x264-params (N.A.) 2417Override the x264 configuration using a :-separated list of key=value 2418parameters. 2419 2420This option is functionally the same as the @option{x264opts}, but is 2421duplicated for compatibility with the Libav fork. 2422 2423For example to specify libx264 encoding options with @command{ffmpeg}: 2424@example 2425ffmpeg -i INPUT -c:v libx264 -x264-params level=30:bframes=0:weightp=0:\ 2426cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:\ 2427no-fast-pskip=1:subq=6:8x8dct=0:trellis=0 OUTPUT 2428@end example 2429@end table 2430 2431Encoding ffpresets for common usages are provided so they can be used with the 2432general presets system (e.g. passing the @option{pre} option). 2433 2434@section libx265 2435 2436x265 H.265/HEVC encoder wrapper. 2437 2438This encoder requires the presence of the libx265 headers and library 2439during configuration. You need to explicitly configure the build with 2440@option{--enable-libx265}. 2441 2442@subsection Options 2443 2444@table @option 2445@item b 2446Sets target video bitrate. 2447 2448@item bf 2449 2450@item g 2451Set the GOP size. 2452 2453@item keyint_min 2454Minimum GOP size. 2455 2456@item refs 2457Number of reference frames each P-frame can use. The range is from @var{1-16}. 2458 2459@item preset 2460Set the x265 preset. 2461 2462@item tune 2463Set the x265 tune parameter. 2464 2465@item profile 2466Set profile restrictions. 2467 2468@item crf 2469Set the quality for constant quality mode. 2470 2471@item qp 2472Set constant quantization rate control method parameter. 2473 2474@item qmin 2475Minimum quantizer scale. 2476 2477@item qmax 2478Maximum quantizer scale. 2479 2480@item qdiff 2481Maximum difference between quantizer scales. 2482 2483@item qblur 2484Quantizer curve blur 2485 2486@item qcomp 2487Quantizer curve compression factor 2488 2489@item i_qfactor 2490 2491@item b_qfactor 2492 2493@item forced-idr 2494Normally, when forcing a I-frame type, the encoder can select any type 2495of I-frame. This option forces it to choose an IDR-frame. 2496 2497@item x265-params 2498Set x265 options using a list of @var{key}=@var{value} couples separated 2499by ":". See @command{x265 --help} for a list of options. 2500 2501For example to specify libx265 encoding options with @option{-x265-params}: 2502 2503@example 2504ffmpeg -i input -c:v libx265 -x265-params crf=26:psy-rd=1 output.mp4 2505@end example 2506@end table 2507 2508@section libxavs2 2509 2510xavs2 AVS2-P2/IEEE1857.4 encoder wrapper. 2511 2512This encoder requires the presence of the libxavs2 headers and library 2513during configuration. You need to explicitly configure the build with 2514@option{--enable-libxavs2}. 2515 2516The following standard libavcodec options are used: 2517@itemize 2518@item 2519@option{b} / @option{bit_rate} 2520@item 2521@option{g} / @option{gop_size} 2522@item 2523@option{bf} / @option{max_b_frames} 2524@end itemize 2525 2526The encoder also has its own specific options: 2527@subsection Options 2528 2529@table @option 2530@item lcu_row_threads 2531Set the number of parallel threads for rows from 1 to 8 (default 5). 2532 2533@item initial_qp 2534Set the xavs2 quantization parameter from 1 to 63 (default 34). This is 2535used to set the initial qp for the first frame. 2536 2537@item qp 2538Set the xavs2 quantization parameter from 1 to 63 (default 34). This is 2539used to set the qp value under constant-QP mode. 2540 2541@item max_qp 2542Set the max qp for rate control from 1 to 63 (default 55). 2543 2544@item min_qp 2545Set the min qp for rate control from 1 to 63 (default 20). 2546 2547@item speed_level 2548Set the Speed level from 0 to 9 (default 0). Higher is better but slower. 2549 2550@item log_level 2551Set the log level from -1 to 3 (default 0). -1: none, 0: error, 25521: warning, 2: info, 3: debug. 2553 2554@item xavs2-params 2555Set xavs2 options using a list of @var{key}=@var{value} couples separated 2556by ":". 2557 2558For example to specify libxavs2 encoding options with @option{-xavs2-params}: 2559 2560@example 2561ffmpeg -i input -c:v libxavs2 -xavs2-params RdoqLevel=0 output.avs2 2562@end example 2563@end table 2564 2565@section libxvid 2566 2567Xvid MPEG-4 Part 2 encoder wrapper. 2568 2569This encoder requires the presence of the libxvidcore headers and library 2570during configuration. You need to explicitly configure the build with 2571@code{--enable-libxvid --enable-gpl}. 2572 2573The native @code{mpeg4} encoder supports the MPEG-4 Part 2 format, so 2574users can encode to this format without this library. 2575 2576@subsection Options 2577 2578The following options are supported by the libxvid wrapper. Some of 2579the following options are listed but are not documented, and 2580correspond to shared codec options. See @ref{codec-options,,the Codec 2581Options chapter} for their documentation. The other shared options 2582which are not listed have no effect for the libxvid encoder. 2583 2584@table @option 2585@item b 2586 2587@item g 2588 2589@item qmin 2590 2591@item qmax 2592 2593@item mpeg_quant 2594 2595@item threads 2596 2597@item bf 2598 2599@item b_qfactor 2600 2601@item b_qoffset 2602 2603@item flags 2604Set specific encoding flags. Possible values: 2605 2606@table @samp 2607 2608@item mv4 2609Use four motion vector by macroblock. 2610 2611@item aic 2612Enable high quality AC prediction. 2613 2614@item gray 2615Only encode grayscale. 2616 2617@item gmc 2618Enable the use of global motion compensation (GMC). 2619 2620@item qpel 2621Enable quarter-pixel motion compensation. 2622 2623@item cgop 2624Enable closed GOP. 2625 2626@item global_header 2627Place global headers in extradata instead of every keyframe. 2628 2629@end table 2630 2631@item trellis 2632 2633@item me_method 2634Set motion estimation method. Possible values in decreasing order of 2635speed and increasing order of quality: 2636 2637@table @samp 2638@item zero 2639Use no motion estimation (default). 2640 2641@item phods 2642@item x1 2643@item log 2644Enable advanced diamond zonal search for 16x16 blocks and half-pixel 2645refinement for 16x16 blocks. @samp{x1} and @samp{log} are aliases for 2646@samp{phods}. 2647 2648@item epzs 2649Enable all of the things described above, plus advanced diamond zonal 2650search for 8x8 blocks, half-pixel refinement for 8x8 blocks, and motion 2651estimation on chroma planes. 2652 2653@item full 2654Enable all of the things described above, plus extended 16x16 and 8x8 2655blocks search. 2656@end table 2657 2658@item mbd 2659Set macroblock decision algorithm. Possible values in the increasing 2660order of quality: 2661 2662@table @samp 2663@item simple 2664Use macroblock comparing function algorithm (default). 2665 2666@item bits 2667Enable rate distortion-based half pixel and quarter pixel refinement for 266816x16 blocks. 2669 2670@item rd 2671Enable all of the things described above, plus rate distortion-based 2672half pixel and quarter pixel refinement for 8x8 blocks, and rate 2673distortion-based search using square pattern. 2674@end table 2675 2676@item lumi_aq 2677Enable lumi masking adaptive quantization when set to 1. Default is 0 2678(disabled). 2679 2680@item variance_aq 2681Enable variance adaptive quantization when set to 1. Default is 0 2682(disabled). 2683 2684When combined with @option{lumi_aq}, the resulting quality will not 2685be better than any of the two specified individually. In other 2686words, the resulting quality will be the worse one of the two 2687effects. 2688 2689@item ssim 2690Set structural similarity (SSIM) displaying method. Possible values: 2691 2692@table @samp 2693@item off 2694Disable displaying of SSIM information. 2695 2696@item avg 2697Output average SSIM at the end of encoding to stdout. The format of 2698showing the average SSIM is: 2699 2700@example 2701Average SSIM: %f 2702@end example 2703 2704For users who are not familiar with C, %f means a float number, or 2705a decimal (e.g. 0.939232). 2706 2707@item frame 2708Output both per-frame SSIM data during encoding and average SSIM at 2709the end of encoding to stdout. The format of per-frame information 2710is: 2711 2712@example 2713 SSIM: avg: %1.3f min: %1.3f max: %1.3f 2714@end example 2715 2716For users who are not familiar with C, %1.3f means a float number 2717rounded to 3 digits after the dot (e.g. 0.932). 2718 2719@end table 2720 2721@item ssim_acc 2722Set SSIM accuracy. Valid options are integers within the range of 27230-4, while 0 gives the most accurate result and 4 computes the 2724fastest. 2725 2726@end table 2727 2728@section MediaFoundation 2729 2730This provides wrappers to encoders (both audio and video) in the 2731MediaFoundation framework. It can access both SW and HW encoders. 2732Video encoders can take input in either of nv12 or yuv420p form 2733(some encoders support both, some support only either - in practice, 2734nv12 is the safer choice, especially among HW encoders). 2735 2736@section mpeg2 2737 2738MPEG-2 video encoder. 2739 2740@subsection Options 2741 2742@table @option 2743@item profile @var{integer} 2744Select the mpeg2 profile to encode: 2745 2746@table @samp 2747@item 422 2748@item main 2749@item ss 2750Spatially Scalable 2751@item snr 2752SNR Scalable 2753@item high 2754@item simple 2755@end table 2756 2757@item seq_disp_ext @var{integer} 2758Specifies if the encoder should write a sequence_display_extension to the 2759output. 2760@table @option 2761@item -1 2762@itemx auto 2763Decide automatically to write it or not (this is the default) by checking if 2764the data to be written is different from the default or unspecified values. 2765@item 0 2766@itemx never 2767Never write it. 2768@item 1 2769@itemx always 2770Always write it. 2771@end table 2772@item video_format @var{integer} 2773Specifies the video_format written into the sequence display extension 2774indicating the source of the video pictures. The default is @samp{unspecified}, 2775can be @samp{component}, @samp{pal}, @samp{ntsc}, @samp{secam} or @samp{mac}. 2776For maximum compatibility, use @samp{component}. 2777@item a53cc @var{boolean} 2778Import closed captions (which must be ATSC compatible format) into output. 2779Default is 1 (on). 2780@end table 2781 2782@section png 2783 2784PNG image encoder. 2785 2786@subsection Private options 2787 2788@table @option 2789@item dpi @var{integer} 2790Set physical density of pixels, in dots per inch, unset by default 2791@item dpm @var{integer} 2792Set physical density of pixels, in dots per meter, unset by default 2793@end table 2794 2795@section ProRes 2796 2797Apple ProRes encoder. 2798 2799FFmpeg contains 2 ProRes encoders, the prores-aw and prores-ks encoder. 2800The used encoder can be chosen with the @code{-vcodec} option. 2801 2802@subsection Private Options for prores-ks 2803 2804@table @option 2805@item profile @var{integer} 2806Select the ProRes profile to encode 2807@table @samp 2808@item proxy 2809@item lt 2810@item standard 2811@item hq 2812@item 4444 2813@item 4444xq 2814@end table 2815 2816@item quant_mat @var{integer} 2817Select quantization matrix. 2818@table @samp 2819@item auto 2820@item default 2821@item proxy 2822@item lt 2823@item standard 2824@item hq 2825@end table 2826If set to @var{auto}, the matrix matching the profile will be picked. 2827If not set, the matrix providing the highest quality, @var{default}, will be 2828picked. 2829 2830@item bits_per_mb @var{integer} 2831How many bits to allot for coding one macroblock. Different profiles use 2832between 200 and 2400 bits per macroblock, the maximum is 8000. 2833 2834@item mbs_per_slice @var{integer} 2835Number of macroblocks in each slice (1-8); the default value (8) 2836should be good in almost all situations. 2837 2838@item vendor @var{string} 2839Override the 4-byte vendor ID. 2840A custom vendor ID like @var{apl0} would claim the stream was produced by 2841the Apple encoder. 2842 2843@item alpha_bits @var{integer} 2844Specify number of bits for alpha component. 2845Possible values are @var{0}, @var{8} and @var{16}. 2846Use @var{0} to disable alpha plane coding. 2847 2848@end table 2849 2850@subsection Speed considerations 2851 2852In the default mode of operation the encoder has to honor frame constraints 2853(i.e. not produce frames with size bigger than requested) while still making 2854output picture as good as possible. 2855A frame containing a lot of small details is harder to compress and the encoder 2856would spend more time searching for appropriate quantizers for each slice. 2857 2858Setting a higher @option{bits_per_mb} limit will improve the speed. 2859 2860For the fastest encoding speed set the @option{qscale} parameter (4 is the 2861recommended value) and do not set a size constraint. 2862 2863@section QSV encoders 2864 2865The family of Intel QuickSync Video encoders (MPEG-2, H.264, HEVC, JPEG/MJPEG and VP9) 2866 2867The ratecontrol method is selected as follows: 2868 2869@itemize @bullet 2870@item 2871When @option{global_quality} is specified, a quality-based mode is used. 2872Specifically this means either 2873@itemize @minus 2874@item 2875@var{CQP} - constant quantizer scale, when the @option{qscale} codec flag is 2876also set (the @option{-qscale} ffmpeg option). 2877 2878@item 2879@var{LA_ICQ} - intelligent constant quality with lookahead, when the 2880@option{look_ahead} option is also set. 2881 2882@item 2883@var{ICQ} -- intelligent constant quality otherwise. 2884@end itemize 2885 2886@item 2887Otherwise, a bitrate-based mode is used. For all of those, you should specify at 2888least the desired average bitrate with the @option{b} option. 2889@itemize @minus 2890@item 2891@var{LA} - VBR with lookahead, when the @option{look_ahead} option is specified. 2892 2893@item 2894@var{VCM} - video conferencing mode, when the @option{vcm} option is set. 2895 2896@item 2897@var{CBR} - constant bitrate, when @option{maxrate} is specified and equal to 2898the average bitrate. 2899 2900@item 2901@var{VBR} - variable bitrate, when @option{maxrate} is specified, but is higher 2902than the average bitrate. 2903 2904@item 2905@var{AVBR} - average VBR mode, when @option{maxrate} is not specified. This mode 2906is further configured by the @option{avbr_accuracy} and 2907@option{avbr_convergence} options. 2908@end itemize 2909@end itemize 2910 2911Note that depending on your system, a different mode than the one you specified 2912may be selected by the encoder. Set the verbosity level to @var{verbose} or 2913higher to see the actual settings used by the QSV runtime. 2914 2915Additional libavcodec global options are mapped to MSDK options as follows: 2916 2917@itemize 2918@item 2919@option{g/gop_size} -> @option{GopPicSize} 2920 2921@item 2922@option{bf/max_b_frames}+1 -> @option{GopRefDist} 2923 2924@item 2925@option{rc_init_occupancy/rc_initial_buffer_occupancy} -> 2926@option{InitialDelayInKB} 2927 2928@item 2929@option{slices} -> @option{NumSlice} 2930 2931@item 2932@option{refs} -> @option{NumRefFrame} 2933 2934@item 2935@option{b_strategy/b_frame_strategy} -> @option{BRefType} 2936 2937@item 2938@option{cgop/CLOSED_GOP} codec flag -> @option{GopOptFlag} 2939 2940@item 2941For the @var{CQP} mode, the @option{i_qfactor/i_qoffset} and 2942@option{b_qfactor/b_qoffset} set the difference between @var{QPP} and @var{QPI}, 2943and @var{QPP} and @var{QPB} respectively. 2944 2945@item 2946Setting the @option{coder} option to the value @var{vlc} will make the H.264 2947encoder use CAVLC instead of CABAC. 2948 2949@end itemize 2950 2951@section snow 2952 2953@subsection Options 2954 2955@table @option 2956@item iterative_dia_size 2957dia size for the iterative motion estimation 2958@end table 2959 2960@section VAAPI encoders 2961 2962Wrappers for hardware encoders accessible via VAAPI. 2963 2964These encoders only accept input in VAAPI hardware surfaces. If you have input 2965in software frames, use the @option{hwupload} filter to upload them to the GPU. 2966 2967The following standard libavcodec options are used: 2968@itemize 2969@item 2970@option{g} / @option{gop_size} 2971@item 2972@option{bf} / @option{max_b_frames} 2973@item 2974@option{profile} 2975 2976If not set, this will be determined automatically from the format of the input 2977frames and the profiles supported by the driver. 2978@item 2979@option{level} 2980@item 2981@option{b} / @option{bit_rate} 2982@item 2983@option{maxrate} / @option{rc_max_rate} 2984@item 2985@option{bufsize} / @option{rc_buffer_size} 2986@item 2987@option{rc_init_occupancy} / @option{rc_initial_buffer_occupancy} 2988@item 2989@option{compression_level} 2990 2991Speed / quality tradeoff: higher values are faster / worse quality. 2992@item 2993@option{q} / @option{global_quality} 2994 2995Size / quality tradeoff: higher values are smaller / worse quality. 2996@item 2997@option{qmin} 2998@item 2999@option{qmax} 3000@item 3001@option{i_qfactor} / @option{i_quant_factor} 3002@item 3003@option{i_qoffset} / @option{i_quant_offset} 3004@item 3005@option{b_qfactor} / @option{b_quant_factor} 3006@item 3007@option{b_qoffset} / @option{b_quant_offset} 3008@item 3009@option{slices} 3010@end itemize 3011 3012All encoders support the following options: 3013@table @option 3014@item low_power 3015Some drivers/platforms offer a second encoder for some codecs intended to use 3016less power than the default encoder; setting this option will attempt to use 3017that encoder. Note that it may support a reduced feature set, so some other 3018options may not be available in this mode. 3019 3020@item idr_interval 3021Set the number of normal intra frames between full-refresh (IDR) frames in 3022open-GOP mode. The intra frames are still IRAPs, but will not include global 3023headers and may have non-decodable leading pictures. 3024 3025@item b_depth 3026Set the B-frame reference depth. When set to one (the default), all B-frames 3027will refer only to P- or I-frames. When set to greater values multiple layers 3028of B-frames will be present, frames in each layer only referring to frames in 3029higher layers. 3030 3031@item rc_mode 3032Set the rate control mode to use. A given driver may only support a subset of 3033modes. 3034 3035Possible modes: 3036@table @option 3037@item auto 3038Choose the mode automatically based on driver support and the other options. 3039This is the default. 3040@item CQP 3041Constant-quality. 3042@item CBR 3043Constant-bitrate. 3044@item VBR 3045Variable-bitrate. 3046@item ICQ 3047Intelligent constant-quality. 3048@item QVBR 3049Quality-defined variable-bitrate. 3050@item AVBR 3051Average variable bitrate. 3052@end table 3053 3054@end table 3055 3056Each encoder also has its own specific options: 3057@table @option 3058 3059@item h264_vaapi 3060@option{profile} sets the value of @emph{profile_idc} and the @emph{constraint_set*_flag}s. 3061@option{level} sets the value of @emph{level_idc}. 3062 3063@table @option 3064@item coder 3065Set entropy encoder (default is @emph{cabac}). Possible values: 3066 3067@table @samp 3068@item ac 3069@item cabac 3070Use CABAC. 3071 3072@item vlc 3073@item cavlc 3074Use CAVLC. 3075@end table 3076 3077@item aud 3078Include access unit delimiters in the stream (not included by default). 3079 3080@item sei 3081Set SEI message types to include. 3082Some combination of the following values: 3083@table @samp 3084@item identifier 3085Include a @emph{user_data_unregistered} message containing information about 3086the encoder. 3087@item timing 3088Include picture timing parameters (@emph{buffering_period} and 3089@emph{pic_timing} messages). 3090@item recovery_point 3091Include recovery points where appropriate (@emph{recovery_point} messages). 3092@end table 3093 3094@end table 3095 3096@item hevc_vaapi 3097@option{profile} and @option{level} set the values of 3098@emph{general_profile_idc} and @emph{general_level_idc} respectively. 3099 3100@table @option 3101@item aud 3102Include access unit delimiters in the stream (not included by default). 3103 3104@item tier 3105Set @emph{general_tier_flag}. This may affect the level chosen for the stream 3106if it is not explicitly specified. 3107 3108@item sei 3109Set SEI message types to include. 3110Some combination of the following values: 3111@table @samp 3112@item hdr 3113Include HDR metadata if the input frames have it 3114(@emph{mastering_display_colour_volume} and @emph{content_light_level} 3115messages). 3116@end table 3117 3118@end table 3119 3120@item mjpeg_vaapi 3121Only baseline DCT encoding is supported. The encoder always uses the standard 3122quantisation and huffman tables - @option{global_quality} scales the standard 3123quantisation table (range 1-100). 3124 3125For YUV, 4:2:0, 4:2:2 and 4:4:4 subsampling modes are supported. RGB is also 3126supported, and will create an RGB JPEG. 3127 3128@table @option 3129@item jfif 3130Include JFIF header in each frame (not included by default). 3131@item huffman 3132Include standard huffman tables (on by default). Turning this off will save 3133a few hundred bytes in each output frame, but may lose compatibility with some 3134JPEG decoders which don't fully handle MJPEG. 3135@end table 3136 3137@item mpeg2_vaapi 3138@option{profile} and @option{level} set the value of @emph{profile_and_level_indication}. 3139 3140@item vp8_vaapi 3141B-frames are not supported. 3142 3143@option{global_quality} sets the @emph{q_idx} used for non-key frames (range 0-127). 3144 3145@table @option 3146@item loop_filter_level 3147@item loop_filter_sharpness 3148Manually set the loop filter parameters. 3149@end table 3150 3151@item vp9_vaapi 3152@option{global_quality} sets the @emph{q_idx} used for P-frames (range 0-255). 3153 3154@table @option 3155@item loop_filter_level 3156@item loop_filter_sharpness 3157Manually set the loop filter parameters. 3158@end table 3159 3160B-frames are supported, but the output stream is always in encode order rather than display 3161order. If B-frames are enabled, it may be necessary to use the @option{vp9_raw_reorder} 3162bitstream filter to modify the output stream to display frames in the correct order. 3163 3164Only normal frames are produced - the @option{vp9_superframe} bitstream filter may be 3165required to produce a stream usable with all decoders. 3166 3167@end table 3168 3169@section vc2 3170 3171SMPTE VC-2 (previously BBC Dirac Pro). This codec was primarily aimed at 3172professional broadcasting but since it supports yuv420, yuv422 and yuv444 at 31738 (limited range or full range), 10 or 12 bits, this makes it suitable for 3174other tasks which require low overhead and low compression (like screen 3175recording). 3176 3177@subsection Options 3178 3179@table @option 3180 3181@item b 3182Sets target video bitrate. Usually that's around 1:6 of the uncompressed 3183video bitrate (e.g. for 1920x1080 50fps yuv422p10 that's around 400Mbps). Higher 3184values (close to the uncompressed bitrate) turn on lossless compression mode. 3185 3186@item field_order 3187Enables field coding when set (e.g. to tt - top field first) for interlaced 3188inputs. Should increase compression with interlaced content as it splits the 3189fields and encodes each separately. 3190 3191@item wavelet_depth 3192Sets the total amount of wavelet transforms to apply, between 1 and 5 (default). 3193Lower values reduce compression and quality. Less capable decoders may not be 3194able to handle values of @option{wavelet_depth} over 3. 3195 3196@item wavelet_type 3197Sets the transform type. Currently only @var{5_3} (LeGall) and @var{9_7} 3198(Deslauriers-Dubuc) 3199are implemented, with 9_7 being the one with better compression and thus 3200is the default. 3201 3202@item slice_width 3203@item slice_height 3204Sets the slice size for each slice. Larger values result in better compression. 3205For compatibility with other more limited decoders use @option{slice_width} of 320632 and @option{slice_height} of 8. 3207 3208@item tolerance 3209Sets the undershoot tolerance of the rate control system in percent. This is 3210to prevent an expensive search from being run. 3211 3212@item qm 3213Sets the quantization matrix preset to use by default or when @option{wavelet_depth} 3214is set to 5 3215@itemize @minus 3216@item 3217@var{default} 3218Uses the default quantization matrix from the specifications, extended with 3219values for the fifth level. This provides a good balance between keeping detail 3220and omitting artifacts. 3221 3222@item 3223@var{flat} 3224Use a completely zeroed out quantization matrix. This increases PSNR but might 3225reduce perception. Use in bogus benchmarks. 3226 3227@item 3228@var{color} 3229Reduces detail but attempts to preserve color at extremely low bitrates. 3230@end itemize 3231 3232@end table 3233 3234@c man end VIDEO ENCODERS 3235 3236@chapter Subtitles Encoders 3237@c man begin SUBTITLES ENCODERS 3238 3239@section dvdsub 3240 3241This codec encodes the bitmap subtitle format that is used in DVDs. 3242Typically they are stored in VOBSUB file pairs (*.idx + *.sub), 3243and they can also be used in Matroska files. 3244 3245@subsection Options 3246 3247@table @option 3248@item palette 3249Specify the global palette used by the bitmaps. 3250 3251The format for this option is a string containing 16 24-bits hexadecimal 3252numbers (without 0x prefix) separated by commas, for example @code{0d00ee, 3253ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 32547b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b}. 3255 3256@item even_rows_fix 3257When set to 1, enable a work-around that makes the number of pixel rows 3258even in all subtitles. This fixes a problem with some players that 3259cut off the bottom row if the number is odd. The work-around just adds 3260a fully transparent row if needed. The overhead is low, typically 3261one byte per subtitle on average. 3262 3263By default, this work-around is disabled. 3264@end table 3265 3266@c man end SUBTITLES ENCODERS 3267