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 coder @var{integer} (@emph{encoding,video})
635 variable length coder / huffman coder
644 @item context @var{integer} (@emph{encoding,video})
647 @item slice_flags @var{integer}
649 @item mbd @var{integer} (@emph{encoding,video})
650 Set macroblock decision algorithm (high quality mode).
659 use best rate distortion
662 @item sc_threshold @var{integer} (@emph{encoding,video})
663 Set scene change threshold.
665 @item nr @var{integer} (@emph{encoding,video})
668 @item rc_init_occupancy @var{integer} (@emph{encoding,video})
669 Set number of bits which should be loaded into the rc buffer before
672 @item flags2 @var{flags} (@emph{decoding/encoding,audio,video,subtitles})
677 Allow non spec compliant speedup tricks.
679 Skip bitstream encoding.
681 Ignore cropping information from sps.
683 Place global headers at every keyframe instead of in extradata.
685 Frame data might be split into multiple chunks.
687 Show all frames before the first keyframe.
689 Export motion vectors into frame side-data (see @code{AV_FRAME_DATA_MOTION_VECTORS})
690 for codecs that support it. See also @file{doc/examples/export_mvs.c}.
692 Do not skip samples and export skip information as frame side data.
693 @item ass_ro_flush_noop
694 Do not reset ASS ReadOrder field on flush.
697 @item export_side_data @var{flags} (@emph{decoding/encoding,audio,video,subtitles})
702 Export motion vectors into frame side-data (see @code{AV_FRAME_DATA_MOTION_VECTORS})
703 for codecs that support it. See also @file{doc/examples/export_mvs.c}.
705 Export encoder Producer Reference Time into packet side-data (see @code{AV_PKT_DATA_PRFT})
706 for codecs that support it.
708 Export video encoding parameters through frame side data (see @code{AV_FRAME_DATA_VIDEO_ENC_PARAMS})
709 for codecs that support it. At present, those are H.264 and VP9.
711 Export film grain parameters through frame side data (see @code{AV_FRAME_DATA_FILM_GRAIN_PARAMS}).
712 Supported at present by AV1 decoders.
715 @item threads @var{integer} (@emph{decoding/encoding,video})
716 Set the number of threads to be used, in case the selected codec
717 implementation supports multi-threading.
722 automatically select the number of threads to set
725 Default value is @samp{auto}.
727 @item dc @var{integer} (@emph{encoding,video})
728 Set intra_dc_precision.
730 @item nssew @var{integer} (@emph{encoding,video})
733 @item skip_top @var{integer} (@emph{decoding,video})
734 Set number of macroblock rows at the top which are skipped.
736 @item skip_bottom @var{integer} (@emph{decoding,video})
737 Set number of macroblock rows at the bottom which are skipped.
739 @item profile @var{integer} (@emph{encoding,audio,video})
741 Set encoder codec profile. Default value is @samp{unknown}. Encoder specific
742 profiles are documented in the relevant encoder documentation.
744 @item level @var{integer} (@emph{encoding,audio,video})
752 @item lowres @var{integer} (@emph{decoding,audio,video})
753 Decode at 1= 1/2, 2=1/4, 3=1/8 resolutions.
755 @item skip_threshold @var{integer} (@emph{encoding,video})
756 Set frame skip threshold.
758 @item skip_factor @var{integer} (@emph{encoding,video})
759 Set frame skip factor.
761 @item skip_exp @var{integer} (@emph{encoding,video})
762 Set frame skip exponent.
763 Negative values behave identical to the corresponding positive ones, except
764 that the score is normalized.
765 Positive values exist primarily for compatibility reasons and are not so useful.
767 @item skipcmp @var{integer} (@emph{encoding,video})
768 Set frame skip compare function.
773 sum of absolute differences, fast (default)
775 sum of squared errors
777 sum of absolute Hadamard transformed differences
779 sum of absolute DCT transformed differences
781 sum of squared quantization errors (avoid, low quality)
783 number of bits needed for the block
785 rate distortion optimal, slow
789 sum of absolute vertical differences
791 sum of squared vertical differences
793 noise preserving sum of squared differences
795 5/3 wavelet, only used in snow
797 9/7 wavelet, only used in snow
804 @item mblmin @var{integer} (@emph{encoding,video})
805 Set min macroblock lagrange factor (VBR).
807 @item mblmax @var{integer} (@emph{encoding,video})
808 Set max macroblock lagrange factor (VBR).
810 @item mepc @var{integer} (@emph{encoding,video})
811 Set motion estimation bitrate penalty compensation (1.0 = 256).
813 @item skip_loop_filter @var{integer} (@emph{decoding,video})
814 @item skip_idct @var{integer} (@emph{decoding,video})
815 @item skip_frame @var{integer} (@emph{decoding,video})
817 Make decoder discard processing depending on the frame type selected
820 @option{skip_loop_filter} skips frame loop filtering, @option{skip_idct}
821 skips frame IDCT/dequantization, @option{skip_frame} skips decoding.
829 Discard useless frames like 0-sized frames.
832 Discard all non-reference frames.
835 Discard all bidirectional frames.
838 Discard all frames excepts keyframes.
841 Discard all frames except I frames.
847 Default value is @samp{default}.
849 @item bidir_refine @var{integer} (@emph{encoding,video})
850 Refine the two motion vectors used in bidirectional macroblocks.
852 @item brd_scale @var{integer} (@emph{encoding,video})
853 Downscale frames for dynamic B-frame decision.
855 @item keyint_min @var{integer} (@emph{encoding,video})
856 Set minimum interval between IDR-frames.
858 @item refs @var{integer} (@emph{encoding,video})
859 Set reference frames to consider for motion compensation.
861 @item chromaoffset @var{integer} (@emph{encoding,video})
862 Set chroma qp offset from luma.
864 @item trellis @var{integer} (@emph{encoding,audio,video})
865 Set rate-distortion optimal quantization.
867 @item mv0_threshold @var{integer} (@emph{encoding,video})
868 @item b_sensitivity @var{integer} (@emph{encoding,video})
869 Adjust sensitivity of b_frame_strategy 1.
871 @item compression_level @var{integer} (@emph{encoding,audio,video})
872 @item min_prediction_order @var{integer} (@emph{encoding,audio})
873 @item max_prediction_order @var{integer} (@emph{encoding,audio})
874 @item timecode_frame_start @var{integer} (@emph{encoding,video})
875 Set GOP timecode frame start number, in non drop frame format.
877 @item bits_per_raw_sample @var{integer}
878 @item channel_layout @var{integer} (@emph{decoding/encoding,audio})
883 @item request_channel_layout @var{integer} (@emph{decoding,audio})
888 @item rc_max_vbv_use @var{float} (@emph{encoding,video})
889 @item rc_min_vbv_use @var{float} (@emph{encoding,video})
890 @item ticks_per_frame @var{integer} (@emph{decoding/encoding,audio,video})
892 @item color_primaries @var{integer} (@emph{decoding/encoding,video})
920 @item color_trc @var{integer} (@emph{decoding/encoding,video})
965 @item colorspace @var{integer} (@emph{decoding/encoding,video})
990 @item chroma-derived-nc
992 @item chroma-derived-c
998 @item color_range @var{integer} (@emph{decoding/encoding,video})
999 If used as input parameter, it serves as a hint to the decoder, which
1000 color_range the input has.
1011 @item chroma_sample_location @var{integer} (@emph{decoding/encoding,video})
1028 @item log_level_offset @var{integer}
1029 Set the log level offset.
1031 @item slices @var{integer} (@emph{encoding,video})
1032 Number of slices, used in parallelized encoding.
1034 @item thread_type @var{flags} (@emph{decoding/encoding,video})
1035 Select which multithreading methods to use.
1037 Use of @samp{frame} will increase decoding delay by one frame per
1038 thread, so clients which cannot provide future frames should not use
1044 Decode more than one part of a single frame at once.
1046 Multithreading using slices works only when the video was encoded with
1050 Decode more than one frame at once.
1053 Default value is @samp{slice+frame}.
1055 @item audio_service_type @var{integer} (@emph{encoding,audio})
1056 Set audio service type.
1080 @item request_sample_fmt @var{sample_fmt} (@emph{decoding,audio})
1081 Set sample format audio decoders should prefer. Default value is
1084 @item pkt_timebase @var{rational number}
1086 @item sub_charenc @var{encoding} (@emph{decoding,subtitles})
1087 Set the input subtitles character encoding.
1089 @item field_order @var{field_order} (@emph{video})
1090 Set/override the field order of the video.
1096 Interlaced video, top field coded and displayed first
1098 Interlaced video, bottom field coded and displayed first
1100 Interlaced video, top coded first, bottom displayed first
1102 Interlaced video, bottom coded first, top displayed first
1105 @item skip_alpha @var{bool} (@emph{decoding,video})
1106 Set to 1 to disable processing alpha (transparency). This works like the
1107 @samp{gray} flag in the @option{flags} option which skips chroma information
1108 instead of alpha. Default is 0.
1110 @item codec_whitelist @var{list} (@emph{input})
1111 "," separated list of allowed decoders. By default all are allowed.
1113 @item dump_separator @var{string} (@emph{input})
1114 Separator used to separate the fields printed on the command line about the
1116 For example, to separate the fields with newlines and indentation:
1118 ffprobe -dump_separator "
1119 " -i ~/videos/matrixbench_mpeg2.mpg
1122 @item max_pixels @var{integer} (@emph{decoding/encoding,video})
1123 Maximum number of pixels per image. This value can be used to avoid out of
1124 memory failures due to large images.
1126 @item apply_cropping @var{bool} (@emph{decoding,video})
1127 Enable cropping if cropping parameters are multiples of the required
1128 alignment for the left and top parameters. If the alignment is not met the
1129 cropping will be partially applied to maintain alignment.
1130 Default is 1 (enabled).
1131 Note: The required alignment depends on if @code{AV_CODEC_FLAG_UNALIGNED} is set and the
1132 CPU. @code{AV_CODEC_FLAG_UNALIGNED} cannot be changed from the command line. Also hardware
1133 decoders will not apply left/top Cropping.
1138 @c man end CODEC OPTIONS
1140 @ifclear config-writeonly
1141 @include decoders.texi
1143 @ifclear config-readonly
1144 @include encoders.texi