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.
48 Use internal 2pass ratecontrol in first pass mode.
50 Use internal 2pass ratecontrol in second pass mode.
52 Only decode/encode grayscale.
54 Set error[?] variables during encoding.
56 Input bitstream might be randomly truncated.
58 Don't output frames whose parameters differ from first decoded frame in stream.
59 Error AVERROR_INPUT_CHANGED is returned when a frame is dropped.
66 Place global headers in extradata instead of every keyframe.
68 Only write platform-, build- and time-independent data. (except (I)DCT).
69 This ensures that file and data checksums are reproducible and match between
70 platforms. Its primary use is for regression testing.
72 Apply H263 advanced intra coding / mpeg4 ac prediction.
74 Apply interlaced motion estimation.
78 Output even potentially corrupted frames.
81 @item time_base @var{rational number}
84 It is the fundamental unit of time (in seconds) in terms of which
85 frame timestamps are represented. For fixed-fps content, timebase
86 should be @code{1 / frame_rate} and timestamp increments should be
89 @item g @var{integer} (@emph{encoding,video})
90 Set the group of picture (GOP) size. Default value is 12.
92 @item ar @var{integer} (@emph{decoding/encoding,audio})
93 Set audio sampling rate (in Hz).
95 @item ac @var{integer} (@emph{decoding/encoding,audio})
96 Set number of audio channels.
98 @item cutoff @var{integer} (@emph{encoding,audio})
99 Set cutoff bandwidth. (Supported only by selected encoders, see
100 their respective documentation sections.)
102 @item frame_size @var{integer} (@emph{encoding,audio})
103 Set audio frame size.
105 Each submitted frame except the last must contain exactly frame_size
106 samples per channel. May be 0 when the codec has
107 CODEC_CAP_VARIABLE_FRAME_SIZE set, in that case the frame size is not
108 restricted. It is set by some decoders to indicate constant frame
111 @item frame_number @var{integer}
112 Set the frame number.
114 @item delay @var{integer}
116 @item qcomp @var{float} (@emph{encoding,video})
117 Set video quantizer scale compression (VBR). It is used as a constant
118 in the ratecontrol equation. Recommended range for default rc_eq:
121 @item qblur @var{float} (@emph{encoding,video})
122 Set video quantizer scale blur (VBR).
124 @item qmin @var{integer} (@emph{encoding,video})
125 Set min video quantizer scale (VBR). Must be included between -1 and
126 69, default value is 2.
128 @item qmax @var{integer} (@emph{encoding,video})
129 Set max video quantizer scale (VBR). Must be included between -1 and
130 1024, default value is 31.
132 @item qdiff @var{integer} (@emph{encoding,video})
133 Set max difference between the quantizer scale (VBR).
135 @item bf @var{integer} (@emph{encoding,video})
136 Set max number of B frames between non-B-frames.
138 Must be an integer between -1 and 16. 0 means that B-frames are
139 disabled. If a value of -1 is used, it will choose an automatic value
140 depending on the encoder.
144 @item b_qfactor @var{float} (@emph{encoding,video})
145 Set qp factor between P and B frames.
147 @item b_strategy @var{integer} (@emph{encoding,video})
148 Set strategy to choose between I/P/B-frames.
150 @item ps @var{integer} (@emph{encoding,video})
151 Set RTP payload size in bytes.
153 @item codec_tag @var{integer}
154 @item bug @var{flags} (@emph{decoding,video})
155 Workaround not auto detected encoder bugs.
162 Xvid interlacing bug (autodetected if fourcc==XVIX)
164 (autodetected if fourcc==UMP4)
166 padding bug (autodetected)
172 old standard qpel (autodetected per fourcc/version)
175 @item direct_blocksize
176 direct-qpel-blocksize bug (autodetected per fourcc/version)
178 edge padding bug (autodetected per fourcc/version)
184 Workaround various bugs in microsoft broken decoders.
189 @item strict @var{integer} (@emph{decoding/encoding,audio,video})
190 Specify how strictly to follow the standards.
195 strictly conform to an older more strict version of the spec or reference software
197 strictly conform to all the things in the spec no matter what consequences
201 allow unofficial extensions
203 allow non standardized experimental things, experimental
204 (unfinished/work in progress/not well tested) decoders and encoders.
205 Note: experimental decoders can pose a security risk, do not use this for
206 decoding untrusted input.
209 @item b_qoffset @var{float} (@emph{encoding,video})
210 Set QP offset between P and B frames.
212 @item err_detect @var{flags} (@emph{decoding,audio,video})
213 Set error detection flags.
220 detect bitstream specification deviations
222 detect improper bitstream length
224 abort decoding on minor error detection
226 ignore decoding errors, and continue decoding.
227 This is useful if you want to analyze the content of a video and thus want
228 everything to be decoded no matter what. This option will not result in a video
229 that is pleasing to watch in case of errors.
231 consider things that violate the spec and have not been seen in the wild as errors
233 consider all spec non compliancies as errors
235 consider things that a sane encoder should not do as an error
238 @item has_b_frames @var{integer}
240 @item block_align @var{integer}
242 @item mpeg_quant @var{integer} (@emph{encoding,video})
243 Use MPEG quantizers instead of H.263.
245 @item rc_override_count @var{integer}
247 @item maxrate @var{integer} (@emph{encoding,audio,video})
248 Set max bitrate tolerance (in bits/s). Requires bufsize to be set.
250 @item minrate @var{integer} (@emph{encoding,audio,video})
251 Set min bitrate tolerance (in bits/s). Most useful in setting up a CBR
252 encode. It is of little use elsewise.
254 @item bufsize @var{integer} (@emph{encoding,audio,video})
255 Set ratecontrol buffer size (in bits).
257 @item i_qfactor @var{float} (@emph{encoding,video})
258 Set QP factor between P and I frames.
260 @item i_qoffset @var{float} (@emph{encoding,video})
261 Set QP offset between P and I frames.
263 @item dct @var{integer} (@emph{encoding,video})
269 autoselect a good one (default)
279 floating point AAN DCT
282 @item lumi_mask @var{float} (@emph{encoding,video})
283 Compress bright areas stronger than medium ones.
285 @item tcplx_mask @var{float} (@emph{encoding,video})
286 Set temporal complexity masking.
288 @item scplx_mask @var{float} (@emph{encoding,video})
289 Set spatial complexity masking.
291 @item p_mask @var{float} (@emph{encoding,video})
294 @item dark_mask @var{float} (@emph{encoding,video})
295 Compress dark areas stronger than medium ones.
297 @item idct @var{integer} (@emph{decoding/encoding,video})
298 Select IDCT implementation.
311 Automatically pick a IDCT compatible with the simple one
330 floating point AAN IDCT
333 @item slice_count @var{integer}
335 @item ec @var{flags} (@emph{decoding,video})
336 Set error concealment strategy.
341 iterative motion vector (MV) search (slow)
343 use strong deblock filter for damaged MBs
345 favor predicting from the previous frame instead of the current
348 @item bits_per_coded_sample @var{integer}
350 @item pred @var{integer} (@emph{encoding,video})
351 Set prediction method.
363 @item aspect @var{rational number} (@emph{encoding,video})
364 Set sample aspect ratio.
366 @item sar @var{rational number} (@emph{encoding,video})
367 Set sample aspect ratio. Alias to @var{aspect}.
369 @item debug @var{flags} (@emph{decoding/encoding,audio,video,subtitles})
370 Print specific debug info.
383 per-block quantization parameter (QP)
387 display complexity metadata for the upcoming frame, GoP or for a given duration.
396 memory management control operations (H.264)
400 picture buffer allocations
404 skip motion compensation
407 @item cmp @var{integer} (@emph{encoding,video})
408 Set full pel me compare function.
413 sum of absolute differences, fast (default)
415 sum of squared errors
417 sum of absolute Hadamard transformed differences
419 sum of absolute DCT transformed differences
421 sum of squared quantization errors (avoid, low quality)
423 number of bits needed for the block
425 rate distortion optimal, slow
429 sum of absolute vertical differences
431 sum of squared vertical differences
433 noise preserving sum of squared differences
435 5/3 wavelet, only used in snow
437 9/7 wavelet, only used in snow
444 @item subcmp @var{integer} (@emph{encoding,video})
445 Set sub pel me compare function.
450 sum of absolute differences, fast (default)
452 sum of squared errors
454 sum of absolute Hadamard transformed differences
456 sum of absolute DCT transformed differences
458 sum of squared quantization errors (avoid, low quality)
460 number of bits needed for the block
462 rate distortion optimal, slow
466 sum of absolute vertical differences
468 sum of squared vertical differences
470 noise preserving sum of squared differences
472 5/3 wavelet, only used in snow
474 9/7 wavelet, only used in snow
481 @item mbcmp @var{integer} (@emph{encoding,video})
482 Set macroblock compare function.
487 sum of absolute differences, fast (default)
489 sum of squared errors
491 sum of absolute Hadamard transformed differences
493 sum of absolute DCT transformed differences
495 sum of squared quantization errors (avoid, low quality)
497 number of bits needed for the block
499 rate distortion optimal, slow
503 sum of absolute vertical differences
505 sum of squared vertical differences
507 noise preserving sum of squared differences
509 5/3 wavelet, only used in snow
511 9/7 wavelet, only used in snow
518 @item ildctcmp @var{integer} (@emph{encoding,video})
519 Set interlaced dct compare function.
524 sum of absolute differences, fast (default)
526 sum of squared errors
528 sum of absolute Hadamard transformed differences
530 sum of absolute DCT transformed differences
532 sum of squared quantization errors (avoid, low quality)
534 number of bits needed for the block
536 rate distortion optimal, slow
540 sum of absolute vertical differences
542 sum of squared vertical differences
544 noise preserving sum of squared differences
546 5/3 wavelet, only used in snow
548 9/7 wavelet, only used in snow
555 @item dia_size @var{integer} (@emph{encoding,video})
556 Set diamond type & size for motion estimation.
558 @item (1024, INT_MAX)
559 full motion estimation(slowest)
561 umh motion estimation
563 hex motion estimation
565 l2s diamond motion estimation
567 var diamond motion estimation
569 small diamond motion estimation
571 funny diamond motion estimation
573 sab diamond motion estimation
576 @item last_pred @var{integer} (@emph{encoding,video})
577 Set amount of motion predictors from the previous frame.
579 @item preme @var{integer} (@emph{encoding,video})
580 Set pre motion estimation.
582 @item precmp @var{integer} (@emph{encoding,video})
583 Set pre motion estimation compare function.
588 sum of absolute differences, fast (default)
590 sum of squared errors
592 sum of absolute Hadamard transformed differences
594 sum of absolute DCT transformed differences
596 sum of squared quantization errors (avoid, low quality)
598 number of bits needed for the block
600 rate distortion optimal, slow
604 sum of absolute vertical differences
606 sum of squared vertical differences
608 noise preserving sum of squared differences
610 5/3 wavelet, only used in snow
612 9/7 wavelet, only used in snow
619 @item pre_dia_size @var{integer} (@emph{encoding,video})
620 Set diamond type & size for motion estimation pre-pass.
622 @item subq @var{integer} (@emph{encoding,video})
623 Set sub pel motion estimation quality.
625 @item me_range @var{integer} (@emph{encoding,video})
626 Set limit motion vectors range (1023 for DivX player).
628 @item global_quality @var{integer} (@emph{encoding,audio,video})
630 @item context @var{integer} (@emph{encoding,video})
633 @item slice_flags @var{integer}
635 @item mbd @var{integer} (@emph{encoding,video})
636 Set macroblock decision algorithm (high quality mode).
645 use best rate distortion
648 @item sc_threshold @var{integer} (@emph{encoding,video})
649 Set scene change threshold.
651 @item nr @var{integer} (@emph{encoding,video})
654 @item rc_init_occupancy @var{integer} (@emph{encoding,video})
655 Set number of bits which should be loaded into the rc buffer before
658 @item flags2 @var{flags} (@emph{decoding/encoding,audio,video,subtitles})
663 Allow non spec compliant speedup tricks.
665 Skip bitstream encoding.
667 Ignore cropping information from sps.
669 Place global headers at every keyframe instead of in extradata.
671 Frame data might be split into multiple chunks.
673 Show all frames before the first keyframe.
675 Export motion vectors into frame side-data (see @code{AV_FRAME_DATA_MOTION_VECTORS})
676 for codecs that support it. See also @file{doc/examples/export_mvs.c}.
678 Do not skip samples and export skip information as frame side data.
679 @item ass_ro_flush_noop
680 Do not reset ASS ReadOrder field on flush.
683 @item export_side_data @var{flags} (@emph{decoding/encoding,audio,video,subtitles})
688 Export motion vectors into frame side-data (see @code{AV_FRAME_DATA_MOTION_VECTORS})
689 for codecs that support it. See also @file{doc/examples/export_mvs.c}.
691 Export encoder Producer Reference Time into packet side-data (see @code{AV_PKT_DATA_PRFT})
692 for codecs that support it.
694 Export video encoding parameters through frame side data (see @code{AV_FRAME_DATA_VIDEO_ENC_PARAMS})
695 for codecs that support it. At present, those are H.264 and VP9.
697 Export film grain parameters through frame side data (see @code{AV_FRAME_DATA_FILM_GRAIN_PARAMS}).
698 Supported at present by AV1 decoders.
701 @item threads @var{integer} (@emph{decoding/encoding,video})
702 Set the number of threads to be used, in case the selected codec
703 implementation supports multi-threading.
708 automatically select the number of threads to set
711 Default value is @samp{auto}.
713 @item dc @var{integer} (@emph{encoding,video})
714 Set intra_dc_precision.
716 @item nssew @var{integer} (@emph{encoding,video})
719 @item skip_top @var{integer} (@emph{decoding,video})
720 Set number of macroblock rows at the top which are skipped.
722 @item skip_bottom @var{integer} (@emph{decoding,video})
723 Set number of macroblock rows at the bottom which are skipped.
725 @item profile @var{integer} (@emph{encoding,audio,video})
727 Set encoder codec profile. Default value is @samp{unknown}. Encoder specific
728 profiles are documented in the relevant encoder documentation.
730 @item level @var{integer} (@emph{encoding,audio,video})
738 @item lowres @var{integer} (@emph{decoding,audio,video})
739 Decode at 1= 1/2, 2=1/4, 3=1/8 resolutions.
741 @item skip_threshold @var{integer} (@emph{encoding,video})
742 Set frame skip threshold.
744 @item skip_factor @var{integer} (@emph{encoding,video})
745 Set frame skip factor.
747 @item skip_exp @var{integer} (@emph{encoding,video})
748 Set frame skip exponent.
749 Negative values behave identical to the corresponding positive ones, except
750 that the score is normalized.
751 Positive values exist primarily for compatibility reasons and are not so useful.
753 @item skipcmp @var{integer} (@emph{encoding,video})
754 Set frame skip compare function.
759 sum of absolute differences, fast (default)
761 sum of squared errors
763 sum of absolute Hadamard transformed differences
765 sum of absolute DCT transformed differences
767 sum of squared quantization errors (avoid, low quality)
769 number of bits needed for the block
771 rate distortion optimal, slow
775 sum of absolute vertical differences
777 sum of squared vertical differences
779 noise preserving sum of squared differences
781 5/3 wavelet, only used in snow
783 9/7 wavelet, only used in snow
790 @item mblmin @var{integer} (@emph{encoding,video})
791 Set min macroblock lagrange factor (VBR).
793 @item mblmax @var{integer} (@emph{encoding,video})
794 Set max macroblock lagrange factor (VBR).
796 @item mepc @var{integer} (@emph{encoding,video})
797 Set motion estimation bitrate penalty compensation (1.0 = 256).
799 @item skip_loop_filter @var{integer} (@emph{decoding,video})
800 @item skip_idct @var{integer} (@emph{decoding,video})
801 @item skip_frame @var{integer} (@emph{decoding,video})
803 Make decoder discard processing depending on the frame type selected
806 @option{skip_loop_filter} skips frame loop filtering, @option{skip_idct}
807 skips frame IDCT/dequantization, @option{skip_frame} skips decoding.
815 Discard useless frames like 0-sized frames.
818 Discard all non-reference frames.
821 Discard all bidirectional frames.
824 Discard all frames excepts keyframes.
827 Discard all frames except I frames.
833 Default value is @samp{default}.
835 @item bidir_refine @var{integer} (@emph{encoding,video})
836 Refine the two motion vectors used in bidirectional macroblocks.
838 @item brd_scale @var{integer} (@emph{encoding,video})
839 Downscale frames for dynamic B-frame decision.
841 @item keyint_min @var{integer} (@emph{encoding,video})
842 Set minimum interval between IDR-frames.
844 @item refs @var{integer} (@emph{encoding,video})
845 Set reference frames to consider for motion compensation.
847 @item chromaoffset @var{integer} (@emph{encoding,video})
848 Set chroma qp offset from luma.
850 @item trellis @var{integer} (@emph{encoding,audio,video})
851 Set rate-distortion optimal quantization.
853 @item mv0_threshold @var{integer} (@emph{encoding,video})
854 @item b_sensitivity @var{integer} (@emph{encoding,video})
855 Adjust sensitivity of b_frame_strategy 1.
857 @item compression_level @var{integer} (@emph{encoding,audio,video})
858 @item min_prediction_order @var{integer} (@emph{encoding,audio})
859 @item max_prediction_order @var{integer} (@emph{encoding,audio})
860 @item timecode_frame_start @var{integer} (@emph{encoding,video})
861 Set GOP timecode frame start number, in non drop frame format.
863 @item bits_per_raw_sample @var{integer}
864 @item channel_layout @var{integer} (@emph{decoding/encoding,audio})
869 @item request_channel_layout @var{integer} (@emph{decoding,audio})
874 @item rc_max_vbv_use @var{float} (@emph{encoding,video})
875 @item rc_min_vbv_use @var{float} (@emph{encoding,video})
876 @item ticks_per_frame @var{integer} (@emph{decoding/encoding,audio,video})
878 @item color_primaries @var{integer} (@emph{decoding/encoding,video})
906 @item color_trc @var{integer} (@emph{decoding/encoding,video})
951 @item colorspace @var{integer} (@emph{decoding/encoding,video})
976 @item chroma-derived-nc
978 @item chroma-derived-c
984 @item color_range @var{integer} (@emph{decoding/encoding,video})
985 If used as input parameter, it serves as a hint to the decoder, which
986 color_range the input has.
997 @item chroma_sample_location @var{integer} (@emph{decoding/encoding,video})
1014 @item log_level_offset @var{integer}
1015 Set the log level offset.
1017 @item slices @var{integer} (@emph{encoding,video})
1018 Number of slices, used in parallelized encoding.
1020 @item thread_type @var{flags} (@emph{decoding/encoding,video})
1021 Select which multithreading methods to use.
1023 Use of @samp{frame} will increase decoding delay by one frame per
1024 thread, so clients which cannot provide future frames should not use
1030 Decode more than one part of a single frame at once.
1032 Multithreading using slices works only when the video was encoded with
1036 Decode more than one frame at once.
1039 Default value is @samp{slice+frame}.
1041 @item audio_service_type @var{integer} (@emph{encoding,audio})
1042 Set audio service type.
1066 @item request_sample_fmt @var{sample_fmt} (@emph{decoding,audio})
1067 Set sample format audio decoders should prefer. Default value is
1070 @item pkt_timebase @var{rational number}
1072 @item sub_charenc @var{encoding} (@emph{decoding,subtitles})
1073 Set the input subtitles character encoding.
1075 @item field_order @var{field_order} (@emph{video})
1076 Set/override the field order of the video.
1082 Interlaced video, top field coded and displayed first
1084 Interlaced video, bottom field coded and displayed first
1086 Interlaced video, top coded first, bottom displayed first
1088 Interlaced video, bottom coded first, top displayed first
1091 @item skip_alpha @var{bool} (@emph{decoding,video})
1092 Set to 1 to disable processing alpha (transparency). This works like the
1093 @samp{gray} flag in the @option{flags} option which skips chroma information
1094 instead of alpha. Default is 0.
1096 @item codec_whitelist @var{list} (@emph{input})
1097 "," separated list of allowed decoders. By default all are allowed.
1099 @item dump_separator @var{string} (@emph{input})
1100 Separator used to separate the fields printed on the command line about the
1102 For example, to separate the fields with newlines and indentation:
1104 ffprobe -dump_separator "
1105 " -i ~/videos/matrixbench_mpeg2.mpg
1108 @item max_pixels @var{integer} (@emph{decoding/encoding,video})
1109 Maximum number of pixels per image. This value can be used to avoid out of
1110 memory failures due to large images.
1112 @item apply_cropping @var{bool} (@emph{decoding,video})
1113 Enable cropping if cropping parameters are multiples of the required
1114 alignment for the left and top parameters. If the alignment is not met the
1115 cropping will be partially applied to maintain alignment.
1116 Default is 1 (enabled).
1117 Note: The required alignment depends on if @code{AV_CODEC_FLAG_UNALIGNED} is set and the
1118 CPU. @code{AV_CODEC_FLAG_UNALIGNED} cannot be changed from the command line. Also hardware
1119 decoders will not apply left/top Cropping.
1124 @c man end CODEC OPTIONS
1126 @ifclear config-writeonly
1127 @include decoders.texi
1129 @ifclear config-readonly
1130 @include encoders.texi