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