📄 avcodec.h
字号:
*/ int context_model; /** * slice flags * - encoding: unused * - decoding: set by user. */ int slice_flags;#define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display#define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG2 field pics)#define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1) /** * XVideo Motion Acceleration * - encoding: forbidden * - decoding: set by decoder */ int xvmc_acceleration; /** * macroblock decision mode * - encoding: set by user. * - decoding: unused */ int mb_decision;#define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp#define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits#define FF_MB_DECISION_RD 2 ///< rate distoration /** * custom intra quantization matrix * - encoding: set by user, can be NULL * - decoding: set by lavc */ uint16_t *intra_matrix,*intra_matrix_luma,*intra_matrix_chroma; /** * custom inter quantization matrix * - encoding: set by user, can be NULL * - decoding: set by lavc */ uint16_t *inter_matrix,*inter_matrix_luma,*inter_matrix_chroma; /** * fourcc from the AVI stream header (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). * this is used to workaround some encoder bugs * - encoding: unused * - decoding: set by user, will be converted to upper case by lavc during init */ unsigned int stream_codec_tag; /** * scene change detection threshold. * 0 is default, larger means fewer detected scene changes * - encoding: set by user. * - decoding: unused */ int scenechange_threshold; /** * minimum and maxminum quantizer for I frames. If 0, derived from qmin, i_quant_factor, i_quant_offset * - encoding: set by user. * - decoding: unused */ int qmin_i,qmax_i; /** * minimum and maximum quantizer for B frames. If 0, derived from qmin, b_quant_factor, b_quant_offset * - encoding: set by user. * - decoding: unused */ int qmin_b,qmax_b; /** * minimum lagrange multipler * - encoding: set by user. * - decoding: unused */ int lmin; /** * maximum lagrange multipler * - encoding: set by user. * - decoding: unused */ int lmax; /** * Palette control structure * - encoding: ??? (no palette-enabled encoder yet) * - decoding: set by user. */ struct AVPaletteControl *palctrl; /** * noise reduction strength * - encoding: set by user. * - decoding: unused */ int noise_reduction; /** * called at the beginning of a frame to get cr buffer for it. * buffer type (size, hints) must be the same. lavc won't check it. * lavc will pass previous buffer in pic, function should return * same buffer or new buffer with old frame "painted" into it. * if pic.data[0] == NULL must behave like get_buffer(). * - encoding: unused * - decoding: set by lavc, user can override */ int (*reget_buffer)(struct AVCodecContext *c, AVFrame *pic); /** * number of bits which should be loaded into the rc buffer before decoding starts * - encoding: set by user. * - decoding: unused */ int rc_initial_buffer_occupancy; /** * * - encoding: set by user. * - decoding: unused */ int inter_threshold; /** * CODEC_FLAG2_*. * - encoding: set by user. * - decoding: set by user. */ int flags2; /** * simulates errors in the bitstream to test error concealment. * - encoding: set by user. * - decoding: unused. */ int error_rate; /** * MP3 antialias algorithm, see FF_AA_* below. * - encoding: unused * - decoding: set by user */ int antialias_algo;#define FF_AA_AUTO 0#define FF_AA_FASTINT 1 //not implemented yet#define FF_AA_INT 2#define FF_AA_FLOAT 3 /** * Quantizer noise shaping. * - encoding: set by user * - decoding: unused */ int quantizer_noise_shaping; /** * Thread count. * is used to decide how many independant tasks should be passed to execute() * - encoding: set by user * - decoding: set by user */ int thread_count; /** * the codec may call this to execute several independant things. it will return only after * finishing all tasks, the user may replace this with some multithreaded implementation, the * default implementation will execute the parts serially * @param count the number of things to execute * - encoding: set by lavc, user can override * - decoding: set by lavc, user can override */ int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void **arg2, int *ret, int count); /** * Thread opaque. * can be used by execute() to store some per AVCodecContext stuff. * - encoding: set by execute() * - decoding: set by execute() */ void *thread_opaque; /** * Motion estimation threshold. under which no motion estimation is * performed, but instead the user specified motion vectors are used * * - encoding: set by user * - decoding: unused */ int me_threshold; /** * Macroblock threshold. under which the user specified macroblock types will be used * - encoding: set by user * - decoding: unused */ int mb_threshold; /** * precision of the intra dc coefficient - 8. * - encoding: set by user * - decoding: unused */ int intra_dc_precision; /** * noise vs. sse weight for the nsse comparsion function. * - encoding: set by user * - decoding: unused */ int nsse_weight; /** * number of macroblock rows at the top which are skipped. * - encoding: unused * - decoding: set by user */ int skip_top; /** * number of macroblock rows at the bottom which are skipped. * - encoding: unused * - decoding: set by user */ int skip_bottom; /** * profile * - encoding: set by user * - decoding: set by lavc */ int profile;#define FF_PROFILE_UNKNOWN -99 /** * level * - encoding: set by user * - decoding: set by lavc */ int level;#define FF_LEVEL_UNKNOWN -99 int xvid_build; /* lavc specific stuff, used to workaround bugs in libavcodec */ int lavc_build; /* divx specific, used to workaround (many) bugs in divx5 */ int divx_version; int divx_build; int ac3mode,ac3lfe; int ac3channels[6]; int nal_length_size; int h264_deblocking_filter,h264_slice_alpha_c0_offset,h264_slice_beta_offset; int vorbis_header_size[3]; int64_t granulepos; int64_t *parserRtStart; void (*handle_user_data)(struct AVCodecContext *c,const uint8_t *buf,int buf_size); /** * low resolution decoding. 1-> 1/2 size, 2->1/4 size * - encoding: unused * - decoding: set by user */ int lowres; /** * bitsream width / height. may be different from width/height if lowres * or other things are used * - encoding: unused * - decoding: set by user before init if known, codec should override / dynamically change if needed */ int coded_width, coded_height; /** * frame skip threshold * - encoding: set by user * - decoding: unused */ int frame_skip_threshold; /** * frame skip factor * - encoding: set by user * - decoding: unused */ int frame_skip_factor; /** * frame skip exponent * - encoding: set by user * - decoding: unused */ int frame_skip_exp; /** * frame skip comparission function * - encoding: set by user. * - decoding: unused */ int frame_skip_cmp; /** * border processing masking. raises the quantizer for mbs on the borders * of the picture. * - encoding: set by user * - decoding: unused */ float border_masking; /** * minimum MB lagrange multipler. * - encoding: set by user. * - decoding: unused */ int mb_lmin; /** * maximum MB lagrange multipler. * - encoding: set by user. * - decoding: unused */ int mb_lmax; /** * * - encoding: set by user. * - decoding: unused */ int me_penalty_compensation; /** * * - encoding: unused * - decoding: set by user. */ enum AVDiscard skip_loop_filter; /** * * - encoding: unused * - decoding: set by user. */ enum AVDiscard skip_idct; /** * * - encoding: unused * - decoding: set by user. */ enum AVDiscard skip_frame; /** * * - encoding: set by user. * - decoding: unused */ int bidir_refine; /** * * - encoding: set by user. * - decoding: unused */ int brd_scale; /** * multiplied by qscale for each frame and added to scene_change_score * - encoding: set by user. * - decoding: unused */ int scenechange_factor;} AVCodecContext;/** * AVCodec. */typedef struct AVCodec { const char *name; enum CodecType type; enum CodecID id; int priv_data_size; int (*init)(AVCodecContext *); int (*encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data); int (*close)(AVCodecContext *); int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, uint8_t *buf, int buf_size); int capabilities; struct AVCodec *next; void (*flush)(AVCodecContext *);} AVCodec;/** * four components are given, that's all. * the last component is alpha */typedef struct AVPicture { uint8_t *data[4]; int linesize[4]; ///< number of bytes per line} AVPicture;/** * AVPaletteControl * This structure defines a method for communicating palette changes * between and demuxer and a decoder. */#define AVPALETTE_SIZE 1024#define AVPALETTE_COUNT 256typedef struct AVPaletteControl { /* demuxer sets this to 1 to indicate the palette has changed; * decoder resets to 0 */ int palette_changed; /* 4-byte ARGB palette entries, stored in native byte order; note that * the individual palette components should be on a 8-bit scale; if * the palette data comes from a IBM VGA native format, the component * data is probably 6 bits in size and needs to be scaled */ unsigned int palette[AVPALETTE_COUNT];} AVPaletteControl;typedef struct AVSubtitleRect { uint16_t x; uint16_t y; uint16_t w; uint16_t h; uint16_t nb_colors; int linesize; uint32_t *rgba_palette; uint8_t *bitmap;} AVSubtitleRect;typedef struct AVSubtitle { uint16_t format; /* 0 = graphics */ uint32_t start_display_time; /* relative to packet pts, in ms */ uint32_t end_display_time; /* relative to packet pts, in ms */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -