3 @c man begin CODEC OPTIONS
5 libavcodec provides some generic global options, which can be set on
6 all the encoders and decoders. In addition each codec may support
7 so-called private options, which are specific for a given codec.
9 Sometimes, a global option may only affect a specific kind of codec,
10 and may be nonsensical or ignored by another, so you need to be aware
11 of the meaning of the specified options. Also some options are
12 meant only for decoding or encoding.
14 Options may be set by specifying -@var{option} @var{value} in the
15 FFmpeg tools, or by setting the value explicitly in the
16 @code{AVCodecContext} options or using the @file{libavutil/opt.h} API
19 The list of supported options follow:
22 @item b @var{integer} (@emph{encoding,audio,video})
23 Set bitrate in bits/s. Default value is 200K.
25 @item ab @var{integer} (@emph{encoding,audio})
26 Set audio bitrate (in bits/s). Default value is 128K.
28 @item bt @var{integer} (@emph{encoding,video})
29 Set video bitrate tolerance (in bits/s). In 1-pass mode, bitrate
30 tolerance specifies how far ratecontrol is willing to deviate from the
31 target average bitrate value. This is not related to min/max
32 bitrate. Lowering tolerance too much has an adverse effect on quality.
34 @item flags @var{flags} (@emph{decoding/encoding,audio,video,subtitles})
40 Use four motion vector by macroblock (mpeg4).
42 Use 1/4 pel motion compensation.
50 Always try a mb with mv=<0,0>.
54 Use internal 2pass ratecontrol in first pass mode.
56 Use internal 2pass ratecontrol in second pass mode.
58 Only decode/encode grayscale.
62 Set error[?] variables during encoding.
66 Normalize adaptive quantization.
72 Place global headers in extradata instead of every keyframe.
74 Only write platform-, build- and time-independent data. (except (I)DCT).
75 This ensures that file and data checksums are reproducible and match between
76 platforms. Its primary use is for regression testing.
78 Apply H263 advanced intra coding / mpeg4 ac prediction.
80 Deprecated, use mpegvideo private options instead.
82 Deprecated, use mpegvideo private options instead.
84 Apply interlaced motion estimation.
89 @item me_method @var{integer} (@emph{encoding,video})
90 Set motion estimation method.
95 zero motion estimation (fastest)
97 full motion estimation (slowest)
99 EPZS motion estimation (default)
101 esa motion estimation (alias for full)
103 tesa motion estimation
105 dia motion estimation (alias for epzs)
107 log motion estimation
109 phods motion estimation
113 hex motion estimation
115 umh motion estimation
117 iter motion estimation
120 @item extradata_size @var{integer}
123 @item time_base @var{rational number}
126 It is the fundamental unit of time (in seconds) in terms of which
127 frame timestamps are represented. For fixed-fps content, timebase
128 should be @code{1 / frame_rate} and timestamp increments should be
131 @item g @var{integer} (@emph{encoding,video})
132 Set the group of picture (GOP) size. Default value is 12.
134 @item ar @var{integer} (@emph{decoding/encoding,audio})
135 Set audio sampling rate (in Hz).
137 @item ac @var{integer} (@emph{decoding/encoding,audio})
138 Set number of audio channels.
140 @item cutoff @var{integer} (@emph{encoding,audio})
141 Set cutoff bandwidth.
143 @item frame_size @var{integer} (@emph{encoding,audio})
144 Set audio frame size.
146 Each submitted frame except the last must contain exactly frame_size
147 samples per channel. May be 0 when the codec has
148 CODEC_CAP_VARIABLE_FRAME_SIZE set, in that case the frame size is not
149 restricted. It is set by some decoders to indicate constant frame
152 @item frame_number @var{integer}
153 Set the frame number.
155 @item delay @var{integer}
157 @item qcomp @var{float} (@emph{encoding,video})
158 Set video quantizer scale compression (VBR). It is used as a constant
159 in the ratecontrol equation. Recommended range for default rc_eq:
162 @item qblur @var{float} (@emph{encoding,video})
163 Set video quantizer scale blur (VBR).
165 @item qmin @var{integer} (@emph{encoding,video})
166 Set min video quantizer scale (VBR). Must be included between -1 and
167 69, default value is 2.
169 @item qmax @var{integer} (@emph{encoding,video})
170 Set max video quantizer scale (VBR). Must be included between -1 and
171 1024, default value is 31.
173 @item qdiff @var{integer} (@emph{encoding,video})
174 Set max difference between the quantizer scale (VBR).
176 @item bf @var{integer} (@emph{encoding,video})
177 Set max number of B frames between non-B-frames.
179 Must be an integer between -1 and 16. 0 means that B-frames are
180 disabled. If a value of -1 is used, it will choose an automatic value
181 depending on the encoder.
185 @item b_qfactor @var{float} (@emph{encoding,video})
186 Set qp factor between P and B frames.
188 @item rc_strategy @var{integer} (@emph{encoding,video})
189 Set ratecontrol method.
191 @item b_strategy @var{integer} (@emph{encoding,video})
192 Set strategy to choose between I/P/B-frames.
194 @item ps @var{integer} (@emph{encoding,video})
195 Set RTP payload size in bytes.
197 @item mv_bits @var{integer}
198 @item header_bits @var{integer}
199 @item i_tex_bits @var{integer}
200 @item p_tex_bits @var{integer}
201 @item i_count @var{integer}
202 @item p_count @var{integer}
203 @item skip_count @var{integer}
204 @item misc_bits @var{integer}
205 @item frame_bits @var{integer}
206 @item codec_tag @var{integer}
207 @item bug @var{flags} (@emph{decoding,video})
208 Workaround not auto detected encoder bugs.
215 some old lavc generated msmpeg4v3 files (no autodetection)
217 Xvid interlacing bug (autodetected if fourcc==XVIX)
219 (autodetected if fourcc==UMP4)
221 padding bug (autodetected)
225 illegal vlc bug (autodetected per fourcc)
229 old standard qpel (autodetected per fourcc/version)
232 @item direct_blocksize
233 direct-qpel-blocksize bug (autodetected per fourcc/version)
235 edge padding bug (autodetected per fourcc/version)
241 Workaround various bugs in microsoft broken decoders.
246 @item lelim @var{integer} (@emph{encoding,video})
247 Set single coefficient elimination threshold for luminance (negative
248 values also consider DC coefficient).
250 @item celim @var{integer} (@emph{encoding,video})
251 Set single coefficient elimination threshold for chrominance (negative
252 values also consider dc coefficient)
254 @item strict @var{integer} (@emph{decoding/encoding,audio,video})
255 Specify how strictly to follow the standards.
260 strictly conform to an older more strict version of the spec or reference software
262 strictly conform to all the things in the spec no matter what consequences
266 allow unofficial extensions
268 allow non standardized experimental things, experimental
269 (unfinished/work in progress/not well tested) decoders and encoders.
270 Note: experimental decoders can pose a security risk, do not use this for
271 decoding untrusted input.
274 @item b_qoffset @var{float} (@emph{encoding,video})
275 Set QP offset between P and B frames.
277 @item err_detect @var{flags} (@emph{decoding,audio,video})
278 Set error detection flags.
285 detect bitstream specification deviations
287 detect improper bitstream length
289 abort decoding on minor error detection
291 ignore decoding errors, and continue decoding.
292 This is useful if you want to analyze the content of a video and thus want
293 everything to be decoded no matter what. This option will not result in a video
294 that is pleasing to watch in case of errors.
296 consider things that violate the spec and have not been seen in the wild as errors
298 consider all spec non compliancies as errors
300 consider things that a sane encoder should not do as an error
303 @item has_b_frames @var{integer}
305 @item block_align @var{integer}
307 @item mpeg_quant @var{integer} (@emph{encoding,video})
308 Use MPEG quantizers instead of H.263.
310 @item qsquish @var{float} (@emph{encoding,video})
311 How to keep quantizer between qmin and qmax (0 = clip, 1 = use
312 differentiable function).
314 @item rc_qmod_amp @var{float} (@emph{encoding,video})
315 Set experimental quantizer modulation.
317 @item rc_qmod_freq @var{integer} (@emph{encoding,video})
318 Set experimental quantizer modulation.
320 @item rc_override_count @var{integer}
322 @item rc_eq @var{string} (@emph{encoding,video})
323 Set rate control equation. When computing the expression, besides the
324 standard functions defined in the section 'Expression Evaluation', the
325 following functions are available: bits2qp(bits), qp2bits(qp). Also
326 the following constants are available: iTex pTex tex mv fCode iCount
327 mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex
330 @item maxrate @var{integer} (@emph{encoding,audio,video})
331 Set max bitrate tolerance (in bits/s). Requires bufsize to be set.
333 @item minrate @var{integer} (@emph{encoding,audio,video})
334 Set min bitrate tolerance (in bits/s). Most useful in setting up a CBR
335 encode. It is of little use elsewise.
337 @item bufsize @var{integer} (@emph{encoding,audio,video})
338 Set ratecontrol buffer size (in bits).
340 @item rc_buf_aggressivity @var{float} (@emph{encoding,video})
343 @item i_qfactor @var{float} (@emph{encoding,video})
344 Set QP factor between P and I frames.
346 @item i_qoffset @var{float} (@emph{encoding,video})
347 Set QP offset between P and I frames.
349 @item rc_init_cplx @var{float} (@emph{encoding,video})
350 Set initial complexity for 1-pass encoding.
352 @item dct @var{integer} (@emph{encoding,video})
358 autoselect a good one (default)
368 floating point AAN DCT
371 @item lumi_mask @var{float} (@emph{encoding,video})
372 Compress bright areas stronger than medium ones.
374 @item tcplx_mask @var{float} (@emph{encoding,video})
375 Set temporal complexity masking.
377 @item scplx_mask @var{float} (@emph{encoding,video})
378 Set spatial complexity masking.
380 @item p_mask @var{float} (@emph{encoding,video})
383 @item dark_mask @var{float} (@emph{encoding,video})
384 Compress dark areas stronger than medium ones.
386 @item idct @var{integer} (@emph{decoding/encoding,video})
387 Select IDCT implementation.
400 Automatically pick a IDCT compatible with the simple one
423 floating point AAN IDCT
426 @item slice_count @var{integer}
428 @item ec @var{flags} (@emph{decoding,video})
429 Set error concealment strategy.
434 iterative motion vector (MV) search (slow)
436 use strong deblock filter for damaged MBs
438 favor predicting from the previous frame instead of the current
441 @item bits_per_coded_sample @var{integer}
443 @item pred @var{integer} (@emph{encoding,video})
444 Set prediction method.
456 @item aspect @var{rational number} (@emph{encoding,video})
457 Set sample aspect ratio.
459 @item sar @var{rational number} (@emph{encoding,video})
460 Set sample aspect ratio. Alias to @var{aspect}.
462 @item debug @var{flags} (@emph{decoding/encoding,audio,video,subtitles})
463 Print specific debug info.
476 per-block quantization parameter (QP)
482 display complexity metadata for the upcoming frame, GoP or for a given duration.
493 memory management control operations (H.264)
497 visualize quantization parameter (QP), lower QP are tinted greener
499 visualize block types
501 picture buffer allocations
505 skip motion compensation
508 @item vismv @var{integer} (@emph{decoding,video})
509 Visualize motion vectors (MVs).
511 This option is deprecated, see the codecview filter instead.
516 forward predicted MVs of P-frames
518 forward predicted MVs of B-frames
520 backward predicted MVs of B-frames
523 @item cmp @var{integer} (@emph{encoding,video})
524 Set full pel me compare function.
529 sum of absolute differences, fast (default)
531 sum of squared errors
533 sum of absolute Hadamard transformed differences
535 sum of absolute DCT transformed differences
537 sum of squared quantization errors (avoid, low quality)
539 number of bits needed for the block
541 rate distortion optimal, slow
545 sum of absolute vertical differences
547 sum of squared vertical differences
549 noise preserving sum of squared differences
551 5/3 wavelet, only used in snow
553 9/7 wavelet, only used in snow
560 @item subcmp @var{integer} (@emph{encoding,video})
561 Set sub pel me compare function.
566 sum of absolute differences, fast (default)
568 sum of squared errors
570 sum of absolute Hadamard transformed differences
572 sum of absolute DCT transformed differences
574 sum of squared quantization errors (avoid, low quality)
576 number of bits needed for the block
578 rate distortion optimal, slow
582 sum of absolute vertical differences
584 sum of squared vertical differences
586 noise preserving sum of squared differences
588 5/3 wavelet, only used in snow
590 9/7 wavelet, only used in snow
597 @item mbcmp @var{integer} (@emph{encoding,video})
598 Set macroblock compare function.
603 sum of absolute differences, fast (default)
605 sum of squared errors
607 sum of absolute Hadamard transformed differences
609 sum of absolute DCT transformed differences
611 sum of squared quantization errors (avoid, low quality)
613 number of bits needed for the block
615 rate distortion optimal, slow
619 sum of absolute vertical differences
621 sum of squared vertical differences
623 noise preserving sum of squared differences
625 5/3 wavelet, only used in snow
627 9/7 wavelet, only used in snow
634 @item ildctcmp @var{integer} (@emph{encoding,video})
635 Set interlaced dct compare function.
640 sum of absolute differences, fast (default)
642 sum of squared errors
644 sum of absolute Hadamard transformed differences
646 sum of absolute DCT transformed differences
648 sum of squared quantization errors (avoid, low quality)
650 number of bits needed for the block
652 rate distortion optimal, slow
656 sum of absolute vertical differences
658 sum of squared vertical differences
660 noise preserving sum of squared differences
662 5/3 wavelet, only used in snow
664 9/7 wavelet, only used in snow
671 @item dia_size @var{integer} (@emph{encoding,video})
672 Set diamond type & size for motion estimation.
674 @item last_pred @var{integer} (@emph{encoding,video})
675 Set amount of motion predictors from the previous frame.
677 @item preme @var{integer} (@emph{encoding,video})
678 Set pre motion estimation.
680 @item precmp @var{integer} (@emph{encoding,video})
681 Set pre motion estimation compare function.
686 sum of absolute differences, fast (default)
688 sum of squared errors
690 sum of absolute Hadamard transformed differences
692 sum of absolute DCT transformed differences
694 sum of squared quantization errors (avoid, low quality)
696 number of bits needed for the block
698 rate distortion optimal, slow
702 sum of absolute vertical differences
704 sum of squared vertical differences
706 noise preserving sum of squared differences
708 5/3 wavelet, only used in snow
710 9/7 wavelet, only used in snow
717 @item pre_dia_size @var{integer} (@emph{encoding,video})
718 Set diamond type & size for motion estimation pre-pass.
720 @item subq @var{integer} (@emph{encoding,video})
721 Set sub pel motion estimation quality.
723 @item dtg_active_format @var{integer}
725 @item me_range @var{integer} (@emph{encoding,video})
726 Set limit motion vectors range (1023 for DivX player).
728 @item ibias @var{integer} (@emph{encoding,video})
729 Set intra quant bias.
731 @item pbias @var{integer} (@emph{encoding,video})
732 Set inter quant bias.
734 @item color_table_id @var{integer}
736 @item global_quality @var{integer} (@emph{encoding,audio,video})
738 @item coder @var{integer} (@emph{encoding,video})
743 variable length coder / huffman coder
754 @item context @var{integer} (@emph{encoding,video})
757 @item slice_flags @var{integer}
759 @item xvmc_acceleration @var{integer}
761 @item mbd @var{integer} (@emph{encoding,video})
762 Set macroblock decision algorithm (high quality mode).
771 use best rate distortion
774 @item stream_codec_tag @var{integer}
776 @item sc_threshold @var{integer} (@emph{encoding,video})
777 Set scene change threshold.
779 @item lmin @var{integer} (@emph{encoding,video})
780 Set min lagrange factor (VBR).
782 @item lmax @var{integer} (@emph{encoding,video})
783 Set max lagrange factor (VBR).
785 @item nr @var{integer} (@emph{encoding,video})
788 @item rc_init_occupancy @var{integer} (@emph{encoding,video})
789 Set number of bits which should be loaded into the rc buffer before
792 @item flags2 @var{flags} (@emph{decoding/encoding,audio,video})
797 Allow non spec compliant speedup tricks.
799 Deprecated, use mpegvideo private options instead.
801 Skip bitstream encoding.
803 Ignore cropping information from sps.
805 Place global headers at every keyframe instead of in extradata.
807 Frame data might be split into multiple chunks.
809 Show all frames before the first keyframe.
811 Deprecated, use mpegvideo private options instead.
813 Export motion vectors into frame side-data (see @code{AV_FRAME_DATA_MOTION_VECTORS})
814 for codecs that support it. See also @file{doc/examples/export_mvs.c}.
817 @item error @var{integer} (@emph{encoding,video})
819 @item qns @var{integer} (@emph{encoding,video})
820 Deprecated, use mpegvideo private options instead.
822 @item threads @var{integer} (@emph{decoding/encoding,video})
823 Set the number of threads to be used, in case the selected codec
824 implementation supports multi-threading.
829 automatically select the number of threads to set
832 Default value is @samp{auto}.
834 @item me_threshold @var{integer} (@emph{encoding,video})
835 Set motion estimation threshold.
837 @item mb_threshold @var{integer} (@emph{encoding,video})
838 Set macroblock threshold.
840 @item dc @var{integer} (@emph{encoding,video})
841 Set intra_dc_precision.
843 @item nssew @var{integer} (@emph{encoding,video})
846 @item skip_top @var{integer} (@emph{decoding,video})
847 Set number of macroblock rows at the top which are skipped.
849 @item skip_bottom @var{integer} (@emph{decoding,video})
850 Set number of macroblock rows at the bottom which are skipped.
852 @item profile @var{integer} (@emph{encoding,audio,video})
898 @item level @var{integer} (@emph{encoding,audio,video})
906 @item lowres @var{integer} (@emph{decoding,audio,video})
907 Decode at 1= 1/2, 2=1/4, 3=1/8 resolutions.
909 @item skip_threshold @var{integer} (@emph{encoding,video})
910 Set frame skip threshold.
912 @item skip_factor @var{integer} (@emph{encoding,video})
913 Set frame skip factor.
915 @item skip_exp @var{integer} (@emph{encoding,video})
916 Set frame skip exponent.
917 Negative values behave identical to the corresponding positive ones, except
918 that the score is normalized.
919 Positive values exist primarily for compatibility reasons and are not so useful.
921 @item skipcmp @var{integer} (@emph{encoding,video})
922 Set frame skip compare function.
927 sum of absolute differences, fast (default)
929 sum of squared errors
931 sum of absolute Hadamard transformed differences
933 sum of absolute DCT transformed differences
935 sum of squared quantization errors (avoid, low quality)
937 number of bits needed for the block
939 rate distortion optimal, slow
943 sum of absolute vertical differences
945 sum of squared vertical differences
947 noise preserving sum of squared differences
949 5/3 wavelet, only used in snow
951 9/7 wavelet, only used in snow
958 @item border_mask @var{float} (@emph{encoding,video})
959 Increase the quantizer for macroblocks close to borders.
961 @item mblmin @var{integer} (@emph{encoding,video})
962 Set min macroblock lagrange factor (VBR).
964 @item mblmax @var{integer} (@emph{encoding,video})
965 Set max macroblock lagrange factor (VBR).
967 @item mepc @var{integer} (@emph{encoding,video})
968 Set motion estimation bitrate penalty compensation (1.0 = 256).
970 @item skip_loop_filter @var{integer} (@emph{decoding,video})
971 @item skip_idct @var{integer} (@emph{decoding,video})
972 @item skip_frame @var{integer} (@emph{decoding,video})
974 Make decoder discard processing depending on the frame type selected
977 @option{skip_loop_filter} skips frame loop filtering, @option{skip_idct}
978 skips frame IDCT/dequantization, @option{skip_frame} skips decoding.
986 Discard useless frames like 0-sized frames.
989 Discard all non-reference frames.
992 Discard all bidirectional frames.
995 Discard all frames excepts keyframes.
1001 Default value is @samp{default}.
1003 @item bidir_refine @var{integer} (@emph{encoding,video})
1004 Refine the two motion vectors used in bidirectional macroblocks.
1006 @item brd_scale @var{integer} (@emph{encoding,video})
1007 Downscale frames for dynamic B-frame decision.
1009 @item keyint_min @var{integer} (@emph{encoding,video})
1010 Set minimum interval between IDR-frames.
1012 @item refs @var{integer} (@emph{encoding,video})
1013 Set reference frames to consider for motion compensation.
1015 @item chromaoffset @var{integer} (@emph{encoding,video})
1016 Set chroma qp offset from luma.
1018 @item trellis @var{integer} (@emph{encoding,audio,video})
1019 Set rate-distortion optimal quantization.
1021 @item sc_factor @var{integer} (@emph{encoding,video})
1022 Set value multiplied by qscale for each frame and added to
1025 @item mv0_threshold @var{integer} (@emph{encoding,video})
1026 @item b_sensitivity @var{integer} (@emph{encoding,video})
1027 Adjust sensitivity of b_frame_strategy 1.
1029 @item compression_level @var{integer} (@emph{encoding,audio,video})
1030 @item min_prediction_order @var{integer} (@emph{encoding,audio})
1031 @item max_prediction_order @var{integer} (@emph{encoding,audio})
1032 @item timecode_frame_start @var{integer} (@emph{encoding,video})
1033 Set GOP timecode frame start number, in non drop frame format.
1035 @item request_channels @var{integer} (@emph{decoding,audio})
1036 Set desired number of audio channels.
1038 @item bits_per_raw_sample @var{integer}
1039 @item channel_layout @var{integer} (@emph{decoding/encoding,audio})
1044 @item request_channel_layout @var{integer} (@emph{decoding,audio})
1049 @item rc_max_vbv_use @var{float} (@emph{encoding,video})
1050 @item rc_min_vbv_use @var{float} (@emph{encoding,video})
1051 @item ticks_per_frame @var{integer} (@emph{decoding/encoding,audio,video})
1052 @item color_primaries @var{integer} (@emph{decoding/encoding,video})
1054 @item color_trc @var{integer} (@emph{decoding/encoding,video})
1085 @item colorspace @var{integer} (@emph{decoding/encoding,video})
1087 @item color_range @var{integer} (@emph{decoding/encoding,video})
1088 If used as input parameter, it serves as a hint to the decoder, which
1089 color_range the input has.
1091 @item chroma_sample_location @var{integer} (@emph{decoding/encoding,video})
1093 @item log_level_offset @var{integer}
1094 Set the log level offset.
1096 @item slices @var{integer} (@emph{encoding,video})
1097 Number of slices, used in parallelized encoding.
1099 @item thread_type @var{flags} (@emph{decoding/encoding,video})
1100 Select which multithreading methods to use.
1102 Use of @samp{frame} will increase decoding delay by one frame per
1103 thread, so clients which cannot provide future frames should not use
1109 Decode more than one part of a single frame at once.
1111 Multithreading using slices works only when the video was encoded with
1115 Decode more than one frame at once.
1118 Default value is @samp{slice+frame}.
1120 @item audio_service_type @var{integer} (@emph{encoding,audio})
1121 Set audio service type.
1145 @item request_sample_fmt @var{sample_fmt} (@emph{decoding,audio})
1146 Set sample format audio decoders should prefer. Default value is
1149 @item pkt_timebase @var{rational number}
1151 @item sub_charenc @var{encoding} (@emph{decoding,subtitles})
1152 Set the input subtitles character encoding.
1154 @item field_order @var{field_order} (@emph{video})
1155 Set/override the field order of the video.
1161 Interlaced video, top field coded and displayed first
1163 Interlaced video, bottom field coded and displayed first
1165 Interlaced video, top coded first, bottom displayed first
1167 Interlaced video, bottom coded first, top displayed first
1170 @item skip_alpha @var{integer} (@emph{decoding,video})
1171 Set to 1 to disable processing alpha (transparency). This works like the
1172 @samp{gray} flag in the @option{flags} option which skips chroma information
1173 instead of alpha. Default is 0.
1175 @item codec_whitelist @var{list} (@emph{input})
1176 "," separated List of allowed decoders. By default all are allowed.
1178 @item dump_separator @var{string} (@emph{input})
1179 Separator used to separate the fields printed on the command line about the
1181 For example to separate the fields with newlines and indention:
1183 ffprobe -dump_separator "
1184 " -i ~/videos/matrixbench_mpeg2.mpg
1189 @c man end CODEC OPTIONS
1191 @ifclear config-writeonly
1192 @include decoders.texi
1194 @ifclear config-readonly
1195 @include encoders.texi