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 codec_tag @var{integer}
148 @item bug @var{flags} (@emph{decoding,video})
149 Workaround not auto detected encoder bugs.
156 Xvid interlacing bug (autodetected if fourcc==XVIX)
158 (autodetected if fourcc==UMP4)
160 padding bug (autodetected)
166 old standard qpel (autodetected per fourcc/version)
169 @item direct_blocksize
170 direct-qpel-blocksize bug (autodetected per fourcc/version)
172 edge padding bug (autodetected per fourcc/version)
178 Workaround various bugs in microsoft broken decoders.
183 @item strict @var{integer} (@emph{decoding/encoding,audio,video})
184 Specify how strictly to follow the standards.
189 strictly conform to an older more strict version of the spec or reference software
191 strictly conform to all the things in the spec no matter what consequences
195 allow unofficial extensions
197 allow non standardized experimental things, experimental
198 (unfinished/work in progress/not well tested) decoders and encoders.
199 Note: experimental decoders can pose a security risk, do not use this for
200 decoding untrusted input.
203 @item b_qoffset @var{float} (@emph{encoding,video})
204 Set QP offset between P and B frames.
206 @item err_detect @var{flags} (@emph{decoding,audio,video})
207 Set error detection flags.
214 detect bitstream specification deviations
216 detect improper bitstream length
218 abort decoding on minor error detection
220 ignore decoding errors, and continue decoding.
221 This is useful if you want to analyze the content of a video and thus want
222 everything to be decoded no matter what. This option will not result in a video
223 that is pleasing to watch in case of errors.
225 consider things that violate the spec and have not been seen in the wild as errors
227 consider all spec non compliancies as errors
229 consider things that a sane encoder should not do as an error
232 @item has_b_frames @var{integer}
234 @item block_align @var{integer}
236 @item rc_override_count @var{integer}
238 @item maxrate @var{integer} (@emph{encoding,audio,video})
239 Set max bitrate tolerance (in bits/s). Requires bufsize to be set.
241 @item minrate @var{integer} (@emph{encoding,audio,video})
242 Set min bitrate tolerance (in bits/s). Most useful in setting up a CBR
243 encode. It is of little use elsewise.
245 @item bufsize @var{integer} (@emph{encoding,audio,video})
246 Set ratecontrol buffer size (in bits).
248 @item i_qfactor @var{float} (@emph{encoding,video})
249 Set QP factor between P and I frames.
251 @item i_qoffset @var{float} (@emph{encoding,video})
252 Set QP offset between P and I frames.
254 @item dct @var{integer} (@emph{encoding,video})
260 autoselect a good one (default)
270 floating point AAN DCT
273 @item lumi_mask @var{float} (@emph{encoding,video})
274 Compress bright areas stronger than medium ones.
276 @item tcplx_mask @var{float} (@emph{encoding,video})
277 Set temporal complexity masking.
279 @item scplx_mask @var{float} (@emph{encoding,video})
280 Set spatial complexity masking.
282 @item p_mask @var{float} (@emph{encoding,video})
285 @item dark_mask @var{float} (@emph{encoding,video})
286 Compress dark areas stronger than medium ones.
288 @item idct @var{integer} (@emph{decoding/encoding,video})
289 Select IDCT implementation.
302 Automatically pick a IDCT compatible with the simple one
321 floating point AAN IDCT
324 @item slice_count @var{integer}
326 @item ec @var{flags} (@emph{decoding,video})
327 Set error concealment strategy.
332 iterative motion vector (MV) search (slow)
334 use strong deblock filter for damaged MBs
336 favor predicting from the previous frame instead of the current
339 @item bits_per_coded_sample @var{integer}
341 @item aspect @var{rational number} (@emph{encoding,video})
342 Set sample aspect ratio.
344 @item sar @var{rational number} (@emph{encoding,video})
345 Set sample aspect ratio. Alias to @var{aspect}.
347 @item debug @var{flags} (@emph{decoding/encoding,audio,video,subtitles})
348 Print specific debug info.
361 per-block quantization parameter (QP)
365 display complexity metadata for the upcoming frame, GoP or for a given duration.
374 memory management control operations (H.264)
378 picture buffer allocations
382 skip motion compensation
385 @item cmp @var{integer} (@emph{encoding,video})
386 Set full pel me compare function.
391 sum of absolute differences, fast (default)
393 sum of squared errors
395 sum of absolute Hadamard transformed differences
397 sum of absolute DCT transformed differences
399 sum of squared quantization errors (avoid, low quality)
401 number of bits needed for the block
403 rate distortion optimal, slow
407 sum of absolute vertical differences
409 sum of squared vertical differences
411 noise preserving sum of squared differences
413 5/3 wavelet, only used in snow
415 9/7 wavelet, only used in snow
422 @item subcmp @var{integer} (@emph{encoding,video})
423 Set sub pel me compare function.
428 sum of absolute differences, fast (default)
430 sum of squared errors
432 sum of absolute Hadamard transformed differences
434 sum of absolute DCT transformed differences
436 sum of squared quantization errors (avoid, low quality)
438 number of bits needed for the block
440 rate distortion optimal, slow
444 sum of absolute vertical differences
446 sum of squared vertical differences
448 noise preserving sum of squared differences
450 5/3 wavelet, only used in snow
452 9/7 wavelet, only used in snow
459 @item mbcmp @var{integer} (@emph{encoding,video})
460 Set macroblock compare function.
465 sum of absolute differences, fast (default)
467 sum of squared errors
469 sum of absolute Hadamard transformed differences
471 sum of absolute DCT transformed differences
473 sum of squared quantization errors (avoid, low quality)
475 number of bits needed for the block
477 rate distortion optimal, slow
481 sum of absolute vertical differences
483 sum of squared vertical differences
485 noise preserving sum of squared differences
487 5/3 wavelet, only used in snow
489 9/7 wavelet, only used in snow
496 @item ildctcmp @var{integer} (@emph{encoding,video})
497 Set interlaced dct compare function.
502 sum of absolute differences, fast (default)
504 sum of squared errors
506 sum of absolute Hadamard transformed differences
508 sum of absolute DCT transformed differences
510 sum of squared quantization errors (avoid, low quality)
512 number of bits needed for the block
514 rate distortion optimal, slow
518 sum of absolute vertical differences
520 sum of squared vertical differences
522 noise preserving sum of squared differences
524 5/3 wavelet, only used in snow
526 9/7 wavelet, only used in snow
533 @item dia_size @var{integer} (@emph{encoding,video})
534 Set diamond type & size for motion estimation.
536 @item (1024, INT_MAX)
537 full motion estimation(slowest)
539 umh motion estimation
541 hex motion estimation
543 l2s diamond motion estimation
545 var diamond motion estimation
547 small diamond motion estimation
549 funny diamond motion estimation
551 sab diamond motion estimation
554 @item last_pred @var{integer} (@emph{encoding,video})
555 Set amount of motion predictors from the previous frame.
557 @item precmp @var{integer} (@emph{encoding,video})
558 Set pre motion estimation compare function.
563 sum of absolute differences, fast (default)
565 sum of squared errors
567 sum of absolute Hadamard transformed differences
569 sum of absolute DCT transformed differences
571 sum of squared quantization errors (avoid, low quality)
573 number of bits needed for the block
575 rate distortion optimal, slow
579 sum of absolute vertical differences
581 sum of squared vertical differences
583 noise preserving sum of squared differences
585 5/3 wavelet, only used in snow
587 9/7 wavelet, only used in snow
594 @item pre_dia_size @var{integer} (@emph{encoding,video})
595 Set diamond type & size for motion estimation pre-pass.
597 @item subq @var{integer} (@emph{encoding,video})
598 Set sub pel motion estimation quality.
600 @item me_range @var{integer} (@emph{encoding,video})
601 Set limit motion vectors range (1023 for DivX player).
603 @item global_quality @var{integer} (@emph{encoding,audio,video})
605 @item slice_flags @var{integer}
607 @item mbd @var{integer} (@emph{encoding,video})
608 Set macroblock decision algorithm (high quality mode).
617 use best rate distortion
620 @item rc_init_occupancy @var{integer} (@emph{encoding,video})
621 Set number of bits which should be loaded into the rc buffer before
624 @item flags2 @var{flags} (@emph{decoding/encoding,audio,video,subtitles})
629 Allow non spec compliant speedup tricks.
631 Skip bitstream encoding.
633 Ignore cropping information from sps.
635 Place global headers at every keyframe instead of in extradata.
637 Frame data might be split into multiple chunks.
639 Show all frames before the first keyframe.
641 Export motion vectors into frame side-data (see @code{AV_FRAME_DATA_MOTION_VECTORS})
642 for codecs that support it. See also @file{doc/examples/export_mvs.c}.
644 Do not skip samples and export skip information as frame side data.
645 @item ass_ro_flush_noop
646 Do not reset ASS ReadOrder field on flush.
649 @item export_side_data @var{flags} (@emph{decoding/encoding,audio,video,subtitles})
654 Export motion vectors into frame side-data (see @code{AV_FRAME_DATA_MOTION_VECTORS})
655 for codecs that support it. See also @file{doc/examples/export_mvs.c}.
657 Export encoder Producer Reference Time into packet side-data (see @code{AV_PKT_DATA_PRFT})
658 for codecs that support it.
660 Export video encoding parameters through frame side data (see @code{AV_FRAME_DATA_VIDEO_ENC_PARAMS})
661 for codecs that support it. At present, those are H.264 and VP9.
663 Export film grain parameters through frame side data (see @code{AV_FRAME_DATA_FILM_GRAIN_PARAMS}).
664 Supported at present by AV1 decoders.
667 @item threads @var{integer} (@emph{decoding/encoding,video})
668 Set the number of threads to be used, in case the selected codec
669 implementation supports multi-threading.
674 automatically select the number of threads to set
677 Default value is @samp{auto}.
679 @item dc @var{integer} (@emph{encoding,video})
680 Set intra_dc_precision.
682 @item nssew @var{integer} (@emph{encoding,video})
685 @item skip_top @var{integer} (@emph{decoding,video})
686 Set number of macroblock rows at the top which are skipped.
688 @item skip_bottom @var{integer} (@emph{decoding,video})
689 Set number of macroblock rows at the bottom which are skipped.
691 @item profile @var{integer} (@emph{encoding,audio,video})
693 Set encoder codec profile. Default value is @samp{unknown}. Encoder specific
694 profiles are documented in the relevant encoder documentation.
696 @item level @var{integer} (@emph{encoding,audio,video})
704 @item lowres @var{integer} (@emph{decoding,audio,video})
705 Decode at 1= 1/2, 2=1/4, 3=1/8 resolutions.
707 @item mblmin @var{integer} (@emph{encoding,video})
708 Set min macroblock lagrange factor (VBR).
710 @item mblmax @var{integer} (@emph{encoding,video})
711 Set max macroblock lagrange factor (VBR).
713 @item skip_loop_filter @var{integer} (@emph{decoding,video})
714 @item skip_idct @var{integer} (@emph{decoding,video})
715 @item skip_frame @var{integer} (@emph{decoding,video})
717 Make decoder discard processing depending on the frame type selected
720 @option{skip_loop_filter} skips frame loop filtering, @option{skip_idct}
721 skips frame IDCT/dequantization, @option{skip_frame} skips decoding.
729 Discard useless frames like 0-sized frames.
732 Discard all non-reference frames.
735 Discard all bidirectional frames.
738 Discard all frames excepts keyframes.
741 Discard all frames except I frames.
747 Default value is @samp{default}.
749 @item bidir_refine @var{integer} (@emph{encoding,video})
750 Refine the two motion vectors used in bidirectional macroblocks.
752 @item keyint_min @var{integer} (@emph{encoding,video})
753 Set minimum interval between IDR-frames.
755 @item refs @var{integer} (@emph{encoding,video})
756 Set reference frames to consider for motion compensation.
758 @item trellis @var{integer} (@emph{encoding,audio,video})
759 Set rate-distortion optimal quantization.
761 @item mv0_threshold @var{integer} (@emph{encoding,video})
762 @item compression_level @var{integer} (@emph{encoding,audio,video})
763 @item bits_per_raw_sample @var{integer}
764 @item channel_layout @var{integer} (@emph{decoding/encoding,audio})
769 @item request_channel_layout @var{integer} (@emph{decoding,audio})
774 @item rc_max_vbv_use @var{float} (@emph{encoding,video})
775 @item rc_min_vbv_use @var{float} (@emph{encoding,video})
776 @item ticks_per_frame @var{integer} (@emph{decoding/encoding,audio,video})
778 @item color_primaries @var{integer} (@emph{decoding/encoding,video})
806 @item color_trc @var{integer} (@emph{decoding/encoding,video})
851 @item colorspace @var{integer} (@emph{decoding/encoding,video})
876 @item chroma-derived-nc
878 @item chroma-derived-c
884 @item color_range @var{integer} (@emph{decoding/encoding,video})
885 If used as input parameter, it serves as a hint to the decoder, which
886 color_range the input has.
897 @item chroma_sample_location @var{integer} (@emph{decoding/encoding,video})
914 @item log_level_offset @var{integer}
915 Set the log level offset.
917 @item slices @var{integer} (@emph{encoding,video})
918 Number of slices, used in parallelized encoding.
920 @item thread_type @var{flags} (@emph{decoding/encoding,video})
921 Select which multithreading methods to use.
923 Use of @samp{frame} will increase decoding delay by one frame per
924 thread, so clients which cannot provide future frames should not use
930 Decode more than one part of a single frame at once.
932 Multithreading using slices works only when the video was encoded with
936 Decode more than one frame at once.
939 Default value is @samp{slice+frame}.
941 @item audio_service_type @var{integer} (@emph{encoding,audio})
942 Set audio service type.
966 @item request_sample_fmt @var{sample_fmt} (@emph{decoding,audio})
967 Set sample format audio decoders should prefer. Default value is
970 @item pkt_timebase @var{rational number}
972 @item sub_charenc @var{encoding} (@emph{decoding,subtitles})
973 Set the input subtitles character encoding.
975 @item field_order @var{field_order} (@emph{video})
976 Set/override the field order of the video.
982 Interlaced video, top field coded and displayed first
984 Interlaced video, bottom field coded and displayed first
986 Interlaced video, top coded first, bottom displayed first
988 Interlaced video, bottom coded first, top displayed first
991 @item skip_alpha @var{bool} (@emph{decoding,video})
992 Set to 1 to disable processing alpha (transparency). This works like the
993 @samp{gray} flag in the @option{flags} option which skips chroma information
994 instead of alpha. Default is 0.
996 @item codec_whitelist @var{list} (@emph{input})
997 "," separated list of allowed decoders. By default all are allowed.
999 @item dump_separator @var{string} (@emph{input})
1000 Separator used to separate the fields printed on the command line about the
1002 For example, to separate the fields with newlines and indentation:
1004 ffprobe -dump_separator "
1005 " -i ~/videos/matrixbench_mpeg2.mpg
1008 @item max_pixels @var{integer} (@emph{decoding/encoding,video})
1009 Maximum number of pixels per image. This value can be used to avoid out of
1010 memory failures due to large images.
1012 @item apply_cropping @var{bool} (@emph{decoding,video})
1013 Enable cropping if cropping parameters are multiples of the required
1014 alignment for the left and top parameters. If the alignment is not met the
1015 cropping will be partially applied to maintain alignment.
1016 Default is 1 (enabled).
1017 Note: The required alignment depends on if @code{AV_CODEC_FLAG_UNALIGNED} is set and the
1018 CPU. @code{AV_CODEC_FLAG_UNALIGNED} cannot be changed from the command line. Also hardware
1019 decoders will not apply left/top Cropping.
1024 @c man end CODEC OPTIONS
1026 @ifclear config-writeonly
1027 @include decoders.texi
1029 @ifclear config-readonly
1030 @include encoders.texi