20 #ifndef AVCODEC_OPTIONS_TABLE_H
21 #define AVCODEC_OPTIONS_TABLE_H
32 #define OFFSET(x) offsetof(AVCodecContext,x)
33 #define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C
35 #define V AV_OPT_FLAG_VIDEO_PARAM
36 #define A AV_OPT_FLAG_AUDIO_PARAM
37 #define S AV_OPT_FLAG_SUBTITLE_PARAM
38 #define E AV_OPT_FLAG_ENCODING_PARAM
39 #define D AV_OPT_FLAG_DECODING_PARAM
41 #define AV_CODEC_DEFAULT_BITRATE 200*1000
45 {
"bt",
"Set video bitrate tolerance (in bits/s). In 1-pass mode, bitrate tolerance specifies how far "
46 "ratecontrol is willing to deviate from the target average bitrate value. This is not related "
47 "to minimum/maximum bitrate. Lowering tolerance too much has an adverse effect on quality.",
59 {
"mv0",
"always try a mb with mv=<0,0>", 0,
AV_OPT_TYPE_CONST, {.i64 =
CODEC_FLAG_MV0 }, INT_MIN, INT_MAX,
V|
E,
"flags"},
61 #if FF_API_INPUT_PRESERVED
72 #if FF_API_NORMALIZE_AQP
91 {
"esa",
"esa motion estimation (alias for full)", 0,
AV_OPT_TYPE_CONST, {.i64 =
ME_FULL }, INT_MIN, INT_MAX,
V|
E,
"me_method" },
93 {
"dia",
"diamond motion estimation (alias for EPZS)", 0,
AV_OPT_TYPE_CONST, {.i64 =
ME_EPZS }, INT_MIN, INT_MAX,
V|
E,
"me_method" },
101 {
"g",
"set the group of picture (GOP) size",
OFFSET(gop_size),
AV_OPT_TYPE_INT, {.i64 = 12 }, INT_MIN, INT_MAX,
V|
E},
108 {
"qcomp",
"video quantizer scale compression (VBR). Constant of ratecontrol equation. "
109 "Recommended range for default rc_eq: 0.0-1.0",
114 {
"qdiff",
"maximum difference between the quantizer scales (VBR)",
OFFSET(max_qdiff),
AV_OPT_TYPE_INT, {.i64 = 3 }, INT_MIN, INT_MAX,
V|
E},
116 {
"b_qfactor",
"QP factor between P- and B-frames",
OFFSET(b_quant_factor),
AV_OPT_TYPE_FLOAT, {.dbl = 1.25 }, -FLT_MAX, FLT_MAX,
V|
E},
118 {
"b_strategy",
"strategy to choose between I/P/B-frames",
OFFSET(b_frame_strategy),
AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX,
V|
E},
132 #if FF_API_OLD_MSMPEG4
149 {
"ms",
"work around various bugs in Microsoft's broken decoders", 0,
AV_OPT_TYPE_CONST, {.i64 =
FF_BUG_MS }, INT_MIN, INT_MAX,
V|
D,
"bug"},
157 {
"b_qoffset",
"QP offset between P- and B-frames",
OFFSET(b_quant_offset),
AV_OPT_TYPE_FLOAT, {.dbl = 1.25 }, -FLT_MAX, FLT_MAX,
V|
E},
158 {
"err_detect",
"set error detection flags",
OFFSET(err_recognition),
AV_OPT_TYPE_FLAGS, {.i64 = 0}, INT_MIN, INT_MAX,
A|
V|
D,
"err_detect"},
166 {
"qsquish",
"how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function)",
OFFSET(rc_qsquish),
AV_OPT_TYPE_FLOAT, {.dbl =
DEFAULT }, 0, 99,
V|
E},
170 {
"rc_eq",
"Set rate control equation. When computing the expression, besides the standard functions "
171 "defined in the section 'Expression Evaluation', the following functions are available: "
172 "bits2qp(bits), qp2bits(qp). Also the following constants are available: iTex pTex tex mv "
173 "fCode iCount mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex avgTex.",
175 {
"maxrate",
"Set maximum bitrate tolerance (in bits/s). Requires bufsize to be set.",
OFFSET(rc_max_rate),
AV_OPT_TYPE_INT, {.i64 =
DEFAULT }, INT_MIN, INT_MAX,
V|
A|
E},
176 {
"minrate",
"Set minimum bitrate tolerance (in bits/s). Most useful in setting up a CBR encode. It is of little use otherwise.",
179 {
"rc_buf_aggressivity",
"currently useless",
OFFSET(rc_buffer_aggressivity),
AV_OPT_TYPE_FLOAT, {.dbl = 1.0 }, -FLT_MAX, FLT_MAX,
V|
E},
180 {
"i_qfactor",
"QP factor between P- and I-frames",
OFFSET(i_quant_factor),
AV_OPT_TYPE_FLOAT, {.dbl = -0.8 }, -FLT_MAX, FLT_MAX,
V|
E},
181 {
"i_qoffset",
"QP offset between P- and I-frames",
OFFSET(i_quant_offset),
AV_OPT_TYPE_FLOAT, {.dbl = 0.0 }, -FLT_MAX, FLT_MAX,
V|
E},
186 #if FF_API_UNUSED_MEMBERS
192 {
"lumi_mask",
"compresses bright areas stronger than medium ones",
OFFSET(lumi_masking),
AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX,
V|
E},
193 {
"tcplx_mask",
"temporal complexity masking",
OFFSET(temporal_cplx_masking),
AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX,
V|
E},
194 {
"scplx_mask",
"spatial complexity masking",
OFFSET(spatial_cplx_masking),
AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX,
V|
E},
196 {
"dark_mask",
"compresses dark areas stronger than medium ones",
OFFSET(dark_masking),
AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX,
V|
E},
211 #if FF_API_ARCH_ALPHA
214 #if FF_API_UNUSED_MEMBERS
218 #if FF_API_IDCT_XVIDMMX
244 #if FF_API_UNUSED_MEMBERS
251 {
"vis_qp",
"visualize quantization parameter (QP), lower QP are tinted greener", 0,
AV_OPT_TYPE_CONST, {.i64 =
FF_DEBUG_VIS_QP }, INT_MIN, INT_MAX,
V|
D,
"debug"},
267 {
"last_pred",
"amount of motion predictors from the previous frame",
OFFSET(last_predictor_count),
AV_OPT_TYPE_INT, {.i64 =
DEFAULT }, INT_MIN, INT_MAX,
V|
E},
270 {
"sad",
"sum of absolute differences, fast (default)", 0,
AV_OPT_TYPE_CONST, {.i64 =
FF_CMP_SAD }, INT_MIN, INT_MAX,
V|
E,
"cmp_func"},
274 {
"psnr",
"sum of squared quantization errors (avoid, low quality)", 0,
AV_OPT_TYPE_CONST, {.i64 =
FF_CMP_PSNR }, INT_MIN, INT_MAX,
V|
E,
"cmp_func"},
276 {
"rd",
"rate distortion optimal, slow", 0,
AV_OPT_TYPE_CONST, {.i64 =
FF_CMP_RD }, INT_MIN, INT_MAX,
V|
E,
"cmp_func"},
283 {
"pre_dia_size",
"diamond type & size for motion estimation pre-pass",
OFFSET(pre_dia_size),
AV_OPT_TYPE_INT, {.i64 =
DEFAULT }, INT_MIN, INT_MAX,
V|
E},
284 {
"subq",
"sub-pel motion estimation quality",
OFFSET(me_subpel_quality),
AV_OPT_TYPE_INT, {.i64 = 8 }, INT_MIN, INT_MAX,
V|
E},
295 #if FF_API_UNUSED_MEMBERS
303 {
"mbd",
"macroblock decision algorithm (high quality mode)",
OFFSET(mb_decision),
AV_OPT_TYPE_INT, {.i64 =
DEFAULT }, INT_MIN, INT_MAX,
V|
E,
"mbd"},
312 {
"rc_init_occupancy",
"number of bits which should be loaded into the rc buffer before decoding starts",
OFFSET(rc_initial_buffer_occupancy),
AV_OPT_TYPE_INT, {.i64 =
DEFAULT }, INT_MIN, INT_MAX,
V|
E},
314 #if FF_API_ERROR_RATE
318 {
"auto",
"autodetect a suitable number of threads to use", 0,
AV_OPT_TYPE_CONST, {.i64 = 0 }, INT_MIN, INT_MAX,
V|
E|
D,
"threads"},
323 {
"skip_top",
"number of macroblock rows at the top which are skipped",
OFFSET(skip_top),
AV_OPT_TYPE_INT, {.i64 =
DEFAULT }, INT_MIN, INT_MAX,
V|
D},
324 {
"skip_bottom",
"number of macroblock rows at the bottom which are skipped",
OFFSET(skip_bottom),
AV_OPT_TYPE_INT, {.i64 =
DEFAULT }, INT_MIN, INT_MAX,
V|
D},
348 {
"border_mask",
"increase the quantizer for macroblocks close to borders",
OFFSET(border_masking),
AV_OPT_TYPE_FLOAT, {.dbl =
DEFAULT }, -FLT_MAX, FLT_MAX,
V|
E},
351 {
"mepc",
"motion estimation bitrate penalty compensation (1.0 = 256)",
OFFSET(me_penalty_compensation),
AV_OPT_TYPE_INT, {.i64 = 256 }, INT_MIN, INT_MAX,
V|
E},
363 {
"keyint_min",
"minimum interval between IDR-frames (x264)",
OFFSET(keyint_min),
AV_OPT_TYPE_INT, {.i64 = 25 }, INT_MIN, INT_MAX,
V|
E},
364 {
"refs",
"reference frames to consider for motion compensation",
OFFSET(refs),
AV_OPT_TYPE_INT, {.i64 = 1 }, INT_MIN, INT_MAX,
V|
E},
367 #if FF_API_UNUSED_MEMBERS
368 {
"sc_factor",
"multiplied by qscale for each frame and added to scene_change_score",
OFFSET(scenechange_factor),
AV_OPT_TYPE_INT, {.i64 = 6 }, 0, INT_MAX,
V|
E},
371 {
"b_sensitivity",
"adjust sensitivity of b_frame_strategy 1",
OFFSET(b_sensitivity),
AV_OPT_TYPE_INT, {.i64 = 40 }, 1, INT_MAX,
V|
E},
375 {
"timecode_frame_start",
"GOP timecode frame start number, in non-drop-frame format",
OFFSET(timecode_frame_start),
AV_OPT_TYPE_INT64, {.i64 = 0 }, 0, INT64_MAX,
V|
E},
376 #if FF_API_REQUEST_CHANNELS
425 {
"log_level_offset",
"set the log level offset",
OFFSET(log_level_offset),
AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX },
426 {
"slices",
"number of slices, used in parallelized encoding",
OFFSET(slices),
AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX,
V|
E},
#define FF_IDCT_SIMPLEARMV5TE
ITU-R BT2020 for 12 bit system.
also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
#define FF_COMPLIANCE_EXPERIMENTAL
Allow nonstandardized experimental things.
#define FF_DEBUG_VIS_MB_TYPE
discard all frames except keyframes
#define FF_BUG_XVID_ILACE
Number of sample formats. DO NOT USE if linking dynamically.
#define FF_COMPRESSION_DEFAULT
#define CODEC_FLAG2_FAST
Allow non spec compliant speedup tricks.
#define FF_MB_DECISION_BITS
chooses the one which needs the fewest bits
"Linear transfer characteristics"
#define CODEC_FLAG_UNALIGNED
Allow decoders to produce frames with data planes that are not aligned to CPU requirements (e...
#define CODEC_FLAG_PASS2
Use internal 2pass ratecontrol in second pass mode.
#define CODEC_FLAG2_IGNORE_CROP
Discard cropping information from SPS.
#define FF_IDCT_SIMPLEALPHA
#define CODEC_FLAG_PASS1
Use internal 2pass ratecontrol in first pass mode.
static int workaround_bugs
also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 ...
#define FF_PROFILE_DTS_HD_HRA
#define FF_COMPLIANCE_VERY_STRICT
Strictly conform to an older more strict version of the spec or reference software.
#define FF_PROFILE_MPEG2_AAC_HE
#define FF_DEBUG_BITSTREAM
enhanced predictive zonal search
#define FF_BUG_HPEL_CHROMA
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above ...
static const AVOption avcodec_options[]
static int bidir_refine(MpegEncContext *s, int mb_x, int mb_y)
#define FF_PROFILE_AAC_MAIN
#define FF_DEBUG_VIS_MV_B_FOR
#define FF_PROFILE_AAC_HE_V2
Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16.
#define CODEC_FLAG_OUTPUT_CORRUPT
Output even those frames that might be corrupted.
#define CODEC_FLAG_QPEL
Use qpel MC.
#define CODEC_FLAG_INPUT_PRESERVED
#define FF_BUG_MS
Work around various bugs in Microsoft's broken decoders.
#define CODEC_FLAG_PSNR
error[?] variables will be set during encoding.
enum AVColorTransferCharacteristic color_trc
#define FF_DEBUG_PICT_INFO
#define CODEC_FLAG_GLOBAL_HEADER
Place global headers in extradata instead of every keyframe.
#define FF_DEBUG_VIS_MV_B_BACK
enum AVColorRange color_range
also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM
#define FF_PROFILE_AAC_LTP
#define FF_BUG_QPEL_CHROMA2
#define CODEC_FLAG_BITEXACT
Use only bitexact stuff (except (I)DCT).
#define FF_PROFILE_AAC_LD
#define CODEC_FLAG_AC_PRED
H.263 advanced intra coding / MPEG-4 AC prediction.
#define FF_IDCT_SIMPLEARM
#define FF_COMPLIANCE_UNOFFICIAL
Allow unofficial extensions.
#define CODEC_FLAG_LOOP_FILTER
loop filter
static const uint8_t frame_size[4]
Libavcodec version macros.
#define FF_BUG_DIRECT_BLOCKSIZE
no search, that is use 0,0 vector whenever one is needed
#define CODEC_FLAG_TRUNCATED
ITU-R BT1361 Extended Colour Gamut.
#define CODEC_FLAG_INTERLACED_ME
interlaced motion estimation
discard all bidirectional frames
#define FF_PROFILE_MPEG2_AAC_LOW
#define FF_CODER_TYPE_DEFLATE
#define FF_PROFILE_DTS_ES
static enum AVDiscard skip_idct
enum AVColorPrimaries color_primaries
#define FF_BUG_NO_PADDING
also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B
#define CODEC_FLAG_QSCALE
Use fixed qscale.
#define FF_BUG_OLD_MSMPEG4
transformed exhaustive search algorithm
#define FF_PROFILE_AAC_ELD
#define CODEC_FLAG_LOW_DELAY
Force low delay.
#define FF_THREAD_FRAME
Decode more than one frame at once.
#define FF_IDCT_SIMPLEARMV6
static int intra_dc_precision
#define FF_PROFILE_AAC_LOW
#define FF_PROFILE_UNKNOWN
ITU-R BT2020 non-constant luminance system.
also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM
#define FF_MB_DECISION_SIMPLE
uses mb_cmp
#define FF_THREAD_SLICE
Decode more than one part of a single frame at once.
#define FF_BUG_AC_VLC
Will be removed, libavcodec can now handle these non-compliant files by default.
#define CODEC_FLAG_INTERLACED_DCT
Use interlaced DCT.
#define FF_BUG_QPEL_CHROMA
the normal 2^n-1 "JPEG" YUV ranges
#define AV_CODEC_DEFAULT_BITRATE
#define FF_PROFILE_DTS_96_24
also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC
#define CODEC_FLAG_NORMALIZE_AQP
Libavcodec external API header.
functionally identical to above
#define FF_IDCT_SIMPLENEON
#define CODEC_FLAG2_LOCAL_HEADER
Place global headers at every keyframe instead of in extradata.
#define FF_DEFAULT_QUANT_BIAS
#define FF_PROFILE_AAC_SSR
#define FF_CODER_TYPE_VLC
#define FF_COMPLIANCE_NORMAL
#define FF_DEBUG_DCT_COEFF
#define FF_MB_DECISION_RD
rate distortion
"Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)"
#define AV_EF_CRCCHECK
Verify checksums embedded in the bitstream (could be of either encoded or decoded data...
discard useless packets like 0 size packets in avi
#define FF_COMPLIANCE_STRICT
Strictly conform to all the things in the spec no matter what consequences.
#define CODEC_FLAG_CLOSED_GOP
#define FF_BUG_AUTODETECT
autodetection
the normal 219*2^(n-8) "MPEG" YUV ranges
ITU-R BT2020 constant luminance system.
discard all non reference
#define CODEC_FLAG_EMU_EDGE
IEC 61966-2-1 (sRGB or sYCC)
#define CODEC_FLAG_GRAY
Only decode/encode grayscale.
#define CODEC_FLAG2_NO_OUTPUT
Skip bitstream encoding.
#define FF_CODER_TYPE_RAW
#define FF_DEBUG_VIS_MV_P_FOR
#define FF_IDCT_SIMPLEMMX
#define FF_DEBUG_STARTCODE
uneven multi-hexagon search
#define FF_CODER_TYPE_RLE
static int error_concealment
#define FF_QP2LAMBDA
factor to convert from H.263 QP to lambda
#define FF_PROFILE_AAC_HE
ITU-R BT2020 for 10 bit system.
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
enum AVColorSpace colorspace
#define FF_PROFILE_DTS_HD_MA
static enum AVDiscard skip_loop_filter
#define CODEC_FLAG_4MV
4 MV per MB allowed / advanced prediction for H.263.
static enum AVDiscard skip_frame
"Logarithmic transfer characteristic (100:1 range)"