2 @c man begin CODEC OPTIONS
4 libavcodec provides some generic global options, which can be set on
5 all the encoders and decoders. In addition each codec may support
6 so-called private options, which are specific for a given codec.
8 Sometimes, a global option may only affect a specific kind of codec,
9 and may be unsensical or ignored by another, so you need to be aware
10 of the meaning of the specified options. Also some options are
11 meant only for decoding or encoding.
13 Options may be set by specifying -@var{option} @var{value} in the
14 FFmpeg tools, or by setting the value explicitly in the
15 @code{AVCodecContext} options or using the @file{libavutil/opt.h} API
18 The list of supported options follow:
21 @item b @var{integer} (@emph{encoding,audio,video})
22 Set bitrate in bits/s. Default value is 200K.
24 @item ab @var{integer} (@emph{encoding,audio})
25 Set audio bitrate (in bits/s). Default value is 128K.
27 @item bt @var{integer} (@emph{encoding,video})
28 Set video bitrate tolerance (in bits/s). In 1-pass mode, bitrate
29 tolerance specifies how far ratecontrol is willing to deviate from the
30 target average bitrate value. This is not related to min/max
31 bitrate. Lowering tolerance too much has an adverse effect on quality.
33 @item flags @var{flags} (@emph{decoding/encoding,audio,video,subtitles})
39 Use four motion vector by macroblock (mpeg4).
41 Use 1/4 pel motion compensation.
49 Always try a mb with mv=<0,0>.
53 Use internal 2pass ratecontrol in first pass mode.
55 Use internal 2pass ratecontrol in second pass mode.
57 Only decode/encode grayscale.
61 Set error[?] variables during encoding.
65 Normalize adaptive quantization.
71 Place global headers in extradata instead of every keyframe.
73 Use only bitexact stuff (except (I)DCT).
75 Apply H263 advanced intra coding / mpeg4 ac prediction.
77 Deprecated, use mpegvideo private options instead.
79 Deprecated, use mpegvideo private options instead.
81 Apply interlaced motion estimation.
86 @item sub_id @var{integer}
87 Deprecated, currently unused.
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 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.
179 @item b_qfactor @var{float} (@emph{encoding,video})
180 Set qp factor between P and B frames.
182 @item rc_strategy @var{integer} (@emph{encoding,video})
183 Set ratecontrol method.
185 @item b_strategy @var{integer} (@emph{encoding,video})
186 Set strategy to choose between I/P/B-frames.
188 @item ps @var{integer} (@emph{encoding,video})
189 Set RTP payload size in bytes.
191 @item mv_bits @var{integer}
192 @item header_bits @var{integer}
193 @item i_tex_bits @var{integer}
194 @item p_tex_bits @var{integer}
195 @item i_count @var{integer}
196 @item p_count @var{integer}
197 @item skip_count @var{integer}
198 @item misc_bits @var{integer}
199 @item frame_bits @var{integer}
200 @item codec_tag @var{integer}
201 @item bug @var{flags} (@emph{decoding,video})
202 Workaround not auto detected encoder bugs.
209 some old lavc generated msmpeg4v3 files (no autodetection)
211 Xvid interlacing bug (autodetected if fourcc==XVIX)
213 (autodetected if fourcc==UMP4)
215 padding bug (autodetected)
219 illegal vlc bug (autodetected per fourcc)
223 old standard qpel (autodetected per fourcc/version)
226 @item direct_blocksize
227 direct-qpel-blocksize bug (autodetected per fourcc/version)
229 edge padding bug (autodetected per fourcc/version)
235 Workaround various bugs in microsoft broken decoders.
240 @item lelim @var{integer} (@emph{encoding,video})
241 Set single coefficient elimination threshold for luminance (negative
242 values also consider DC coefficient).
244 @item celim @var{integer} (@emph{encoding,video})
245 Set single coefficient elimination threshold for chrominance (negative
246 values also consider dc coefficient)
248 @item strict @var{integer} (@emph{decoding/encoding,audio,video})
249 Specify how strictly to follow the standards.
254 strictly conform to a older more strict version of the spec or reference software
256 strictly conform to all the things in the spec no matter what consequences
260 allow unofficial extensions
262 allow non standardized experimental things, experimental
263 (unfinished/work in progress/not well tested) decoders and encoders.
264 Note: experimental decoders can pose a security risk, do not use this for
265 decoding untrusted input.
268 @item b_qoffset @var{float} (@emph{encoding,video})
269 Set QP offset between P and B frames.
271 @item err_detect @var{flags} (@emph{decoding,audio,video})
272 Set error detection flags.
279 detect bitstream specification deviations
281 detect improper bitstream length
283 abort decoding on minor error detection
285 consider things that violate the spec and have not been seen in the wild as errors
287 consider all spec non compliancies as errors
289 consider things that a sane encoder should not do as an error
292 @item has_b_frames @var{integer}
294 @item block_align @var{integer}
296 @item mpeg_quant @var{integer} (@emph{encoding,video})
297 Use MPEG quantizers instead of H.263.
299 @item qsquish @var{float} (@emph{encoding,video})
300 How to keep quantizer between qmin and qmax (0 = clip, 1 = use
301 differentiable function).
303 @item rc_qmod_amp @var{float} (@emph{encoding,video})
304 Set experimental quantizer modulation.
306 @item rc_qmod_freq @var{integer} (@emph{encoding,video})
307 Set experimental quantizer modulation.
309 @item rc_override_count @var{integer}
311 @item rc_eq @var{string} (@emph{encoding,video})
312 Set rate control equation. When computing the expression, besides the
313 standard functions defined in the section 'Expression Evaluation', the
314 following functions are available: bits2qp(bits), qp2bits(qp). Also
315 the following constants are available: iTex pTex tex mv fCode iCount
316 mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex
319 @item maxrate @var{integer} (@emph{encoding,audio,video})
320 Set max bitrate tolerance (in bits/s). Requires bufsize to be set.
322 @item minrate @var{integer} (@emph{encoding,audio,video})
323 Set min bitrate tolerance (in bits/s). Most useful in setting up a CBR
324 encode. It is of little use elsewise.
326 @item bufsize @var{integer} (@emph{encoding,audio,video})
327 Set ratecontrol buffer size (in bits).
329 @item rc_buf_aggressivity @var{float} (@emph{encoding,video})
332 @item i_qfactor @var{float} (@emph{encoding,video})
333 Set QP factor between P and I frames.
335 @item i_qoffset @var{float} (@emph{encoding,video})
336 Set QP offset between P and I frames.
338 @item rc_init_cplx @var{float} (@emph{encoding,video})
339 Set initial complexity for 1-pass encoding.
341 @item dct @var{integer} (@emph{encoding,video})
347 autoselect a good one (default)
357 floating point AAN DCT
360 @item lumi_mask @var{float} (@emph{encoding,video})
361 Compress bright areas stronger than medium ones.
363 @item tcplx_mask @var{float} (@emph{encoding,video})
364 Set temporal complexity masking.
366 @item scplx_mask @var{float} (@emph{encoding,video})
367 Set spatial complexity masking.
369 @item p_mask @var{float} (@emph{encoding,video})
372 @item dark_mask @var{float} (@emph{encoding,video})
373 Compress dark areas stronger than medium ones.
375 @item idct @var{integer} (@emph{decoding/encoding,video})
376 Select IDCT implementation.
417 floating point AAN IDCT
420 @item slice_count @var{integer}
422 @item ec @var{flags} (@emph{decoding,video})
423 Set error concealment strategy.
428 iterative motion vector (MV) search (slow)
430 use strong deblock filter for damaged MBs
433 @item bits_per_coded_sample @var{integer}
435 @item pred @var{integer} (@emph{encoding,video})
436 Set prediction method.
448 @item aspect @var{rational number} (@emph{encoding,video})
449 Set sample aspect ratio.
451 @item debug @var{flags} (@emph{decoding/encoding,audio,video,subtitles})
452 Print specific debug info.
465 per-block quantization parameter (QP)
479 memory management control operations (H.264)
483 visualize quantization parameter (QP), lower QP are tinted greener
485 visualize block types
487 picture buffer allocations
492 @item vismv @var{integer} (@emph{decoding,video})
493 Visualize motion vectors (MVs).
498 forward predicted MVs of P-frames
500 forward predicted MVs of B-frames
502 backward predicted MVs of B-frames
505 @item cmp @var{integer} (@emph{encoding,video})
506 Set full pel me compare function.
511 sum of absolute differences, fast (default)
513 sum of squared errors
515 sum of absolute Hadamard transformed differences
517 sum of absolute DCT transformed differences
519 sum of squared quantization errors (avoid, low quality)
521 number of bits needed for the block
523 rate distortion optimal, slow
527 sum of absolute vertical differences
529 sum of squared vertical differences
531 noise preserving sum of squared differences
533 5/3 wavelet, only used in snow
535 9/7 wavelet, only used in snow
542 @item subcmp @var{integer} (@emph{encoding,video})
543 Set sub pel me compare function.
548 sum of absolute differences, fast (default)
550 sum of squared errors
552 sum of absolute Hadamard transformed differences
554 sum of absolute DCT transformed differences
556 sum of squared quantization errors (avoid, low quality)
558 number of bits needed for the block
560 rate distortion optimal, slow
564 sum of absolute vertical differences
566 sum of squared vertical differences
568 noise preserving sum of squared differences
570 5/3 wavelet, only used in snow
572 9/7 wavelet, only used in snow
579 @item mbcmp @var{integer} (@emph{encoding,video})
580 Set macroblock compare function.
585 sum of absolute differences, fast (default)
587 sum of squared errors
589 sum of absolute Hadamard transformed differences
591 sum of absolute DCT transformed differences
593 sum of squared quantization errors (avoid, low quality)
595 number of bits needed for the block
597 rate distortion optimal, slow
601 sum of absolute vertical differences
603 sum of squared vertical differences
605 noise preserving sum of squared differences
607 5/3 wavelet, only used in snow
609 9/7 wavelet, only used in snow
616 @item ildctcmp @var{integer} (@emph{encoding,video})
617 Set interlaced dct compare function.
622 sum of absolute differences, fast (default)
624 sum of squared errors
626 sum of absolute Hadamard transformed differences
628 sum of absolute DCT transformed differences
630 sum of squared quantization errors (avoid, low quality)
632 number of bits needed for the block
634 rate distortion optimal, slow
638 sum of absolute vertical differences
640 sum of squared vertical differences
642 noise preserving sum of squared differences
644 5/3 wavelet, only used in snow
646 9/7 wavelet, only used in snow
653 @item dia_size @var{integer} (@emph{encoding,video})
654 Set diamond type & size for motion estimation.
656 @item last_pred @var{integer} (@emph{encoding,video})
657 Set amount of motion predictors from the previous frame.
659 @item preme @var{integer} (@emph{encoding,video})
660 Set pre motion estimation.
662 @item precmp @var{integer} (@emph{encoding,video})
663 Set pre motion estimation compare function.
668 sum of absolute differences, fast (default)
670 sum of squared errors
672 sum of absolute Hadamard transformed differences
674 sum of absolute DCT transformed differences
676 sum of squared quantization errors (avoid, low quality)
678 number of bits needed for the block
680 rate distortion optimal, slow
684 sum of absolute vertical differences
686 sum of squared vertical differences
688 noise preserving sum of squared differences
690 5/3 wavelet, only used in snow
692 9/7 wavelet, only used in snow
699 @item pre_dia_size @var{integer} (@emph{encoding,video})
700 Set diamond type & size for motion estimation pre-pass.
702 @item subq @var{integer} (@emph{encoding,video})
703 Set sub pel motion estimation quality.
705 @item dtg_active_format @var{integer}
707 @item me_range @var{integer} (@emph{encoding,video})
708 Set limit motion vectors range (1023 for DivX player).
710 @item ibias @var{integer} (@emph{encoding,video})
711 Set intra quant bias.
713 @item pbias @var{integer} (@emph{encoding,video})
714 Set inter quant bias.
716 @item color_table_id @var{integer}
718 @item global_quality @var{integer} (@emph{encoding,audio,video})
720 @item coder @var{integer} (@emph{encoding,video})
725 variable length coder / huffman coder
736 @item context @var{integer} (@emph{encoding,video})
739 @item slice_flags @var{integer}
741 @item xvmc_acceleration @var{integer}
743 @item mbd @var{integer} (@emph{encoding,video})
744 Set macroblock decision algorithm (high quality mode).
753 use best rate distortion
756 @item stream_codec_tag @var{integer}
758 @item sc_threshold @var{integer} (@emph{encoding,video})
759 Set scene change threshold.
761 @item lmin @var{integer} (@emph{encoding,video})
762 Set min lagrange factor (VBR).
764 @item lmax @var{integer} (@emph{encoding,video})
765 Set max lagrange factor (VBR).
767 @item nr @var{integer} (@emph{encoding,video})
770 @item rc_init_occupancy @var{integer} (@emph{encoding,video})
771 Set number of bits which should be loaded into the rc buffer before
774 @item inter_threshold @var{integer} (@emph{encoding,video})
776 @item flags2 @var{flags} (@emph{decoding/encoding,audio,video})
781 allow non spec compliant speedup tricks
783 Deprecated, use mpegvideo private options instead
785 skip bitstream encoding
787 place global headers at every keyframe instead of in extradata
789 Frame data might be split into multiple chunks
791 Show all frames before the first keyframe
793 Deprecated, use mpegvideo private options instead
796 @item error @var{integer} (@emph{encoding,video})
798 @item qns @var{integer} (@emph{encoding,video})
799 Deprecated, use mpegvideo private options instead.
801 @item threads @var{integer} (@emph{decoding/encoding,video})
806 detect a good number of threads
809 @item me_threshold @var{integer} (@emph{encoding,video})
810 Set motion estimation threshold.
812 @item mb_threshold @var{integer} (@emph{encoding,video})
813 Set macroblock threshold.
815 @item dc @var{integer} (@emph{encoding,video})
816 Set intra_dc_precision.
818 @item nssew @var{integer} (@emph{encoding,video})
821 @item skip_top @var{integer} (@emph{decoding,video})
822 Set number of macroblock rows at the top which are skipped.
824 @item skip_bottom @var{integer} (@emph{decoding,video})
825 Set number of macroblock rows at the bottom which are skipped.
827 @item profile @var{integer} (@emph{encoding,audio,video})
861 @item level @var{integer} (@emph{encoding,audio,video})
869 @item lowres @var{integer} (@emph{decoding,audio,video})
870 Decode at 1= 1/2, 2=1/4, 3=1/8 resolutions.
872 @item skip_threshold @var{integer} (@emph{encoding,video})
873 Set frame skip threshold.
875 @item skip_factor @var{integer} (@emph{encoding,video})
876 Set frame skip factor.
878 @item skip_exp @var{integer} (@emph{encoding,video})
879 Set frame skip exponent.
881 @item skipcmp @var{integer} (@emph{encoding,video})
882 Set frame skip compare function.
887 sum of absolute differences, fast (default)
889 sum of squared errors
891 sum of absolute Hadamard transformed differences
893 sum of absolute DCT transformed differences
895 sum of squared quantization errors (avoid, low quality)
897 number of bits needed for the block
899 rate distortion optimal, slow
903 sum of absolute vertical differences
905 sum of squared vertical differences
907 noise preserving sum of squared differences
909 5/3 wavelet, only used in snow
911 9/7 wavelet, only used in snow
918 @item border_mask @var{float} (@emph{encoding,video})
919 Increase the quantizer for macroblocks close to borders.
921 @item mblmin @var{integer} (@emph{encoding,video})
922 Set min macroblock lagrange factor (VBR).
924 @item mblmax @var{integer} (@emph{encoding,video})
925 Set max macroblock lagrange factor (VBR).
927 @item mepc @var{integer} (@emph{encoding,video})
928 Set motion estimation bitrate penalty compensation (1.0 = 256).
930 @item skip_loop_filter @var{integer} (@emph{decoding,video})
931 @item skip_idct @var{integer} (@emph{decoding,video})
932 @item skip_frame @var{integer} (@emph{decoding,video})
934 Make decoder discard processing depending on the frame type selected
937 @option{skip_loop_filter} skips frame loop filtering, @option{skip_idct}
938 skips frame IDCT/dequantization, @option{skip_frame} skips decoding.
946 Discard useless frames like 0-sized frames.
949 Discard all non-reference frames.
952 Discard all bidirectional frames.
955 Discard all frames excepts keyframes.
961 Default value is @samp{default}.
963 @item bidir_refine @var{integer} (@emph{encoding,video})
964 Refine the two motion vectors used in bidirectional macroblocks.
966 @item brd_scale @var{integer} (@emph{encoding,video})
967 Downscale frames for dynamic B-frame decision.
969 @item keyint_min @var{integer} (@emph{encoding,video})
970 Set minimum interval between IDR-frames.
972 @item refs @var{integer} (@emph{encoding,video})
973 Set reference frames to consider for motion compensation.
975 @item chromaoffset @var{integer} (@emph{encoding,video})
976 Set chroma qp offset from luma.
978 @item trellis @var{integer} (@emph{encoding,audio,video})
979 Set rate-distortion optimal quantization.
981 @item sc_factor @var{integer} (@emph{encoding,video})
982 Set value multiplied by qscale for each frame and added to
985 @item mv0_threshold @var{integer} (@emph{encoding,video})
986 @item b_sensitivity @var{integer} (@emph{encoding,video})
987 Adjust sensitivity of b_frame_strategy 1.
989 @item compression_level @var{integer} (@emph{encoding,audio,video})
990 @item min_prediction_order @var{integer} (@emph{encoding,audio})
991 @item max_prediction_order @var{integer} (@emph{encoding,audio})
992 @item timecode_frame_start @var{integer} (@emph{encoding,video})
993 Set GOP timecode frame start number, in non drop frame format.
995 @item request_channels @var{integer} (@emph{decoding,audio})
996 Set desired number of audio channels.
998 @item bits_per_raw_sample @var{integer}
999 @item channel_layout @var{integer} (@emph{decoding/encoding,audio})
1004 @item request_channel_layout @var{integer} (@emph{decoding,audio})
1009 @item rc_max_vbv_use @var{float} (@emph{encoding,video})
1010 @item rc_min_vbv_use @var{float} (@emph{encoding,video})
1011 @item ticks_per_frame @var{integer} (@emph{decoding/encoding,audio,video})
1012 @item color_primaries @var{integer} (@emph{decoding/encoding,video})
1013 @item color_trc @var{integer} (@emph{decoding/encoding,video})
1014 @item colorspace @var{integer} (@emph{decoding/encoding,video})
1015 @item color_range @var{integer} (@emph{decoding/encoding,video})
1016 @item chroma_sample_location @var{integer} (@emph{decoding/encoding,video})
1018 @item log_level_offset @var{integer}
1019 Set the log level offset.
1021 @item slices @var{integer} (@emph{encoding,video})
1022 Number of slices, used in parallelized encoding.
1024 @item thread_type @var{flags} (@emph{decoding/encoding,video})
1025 Select multithreading type.
1034 @item audio_service_type @var{integer} (@emph{encoding,audio})
1035 Set audio service type.
1059 @item request_sample_fmt @var{sample_fmt} (@emph{decoding,audio})
1060 Set sample format audio decoders should prefer. Default value is
1063 @item pkt_timebase @var{rational number}
1065 @item sub_charenc @var{encoding} (@emph{decoding,subtitles})
1066 Set the input subtitles character encoding.
1069 @c man end CODEC OPTIONS
1071 @include decoders.texi
1072 @include encoders.texi