📄 avcodec.h
字号:
#define CODEC_FLAG2_STRICT_GOP 0x00000002 ///< Strictly enforce GOP size.#define CODEC_FLAG2_NO_OUTPUT 0x00000004 ///< Skip bitstream encoding.#define CODEC_FLAG2_LOCAL_HEADER 0x00000008 ///< Place global headers at every keyframe instead of in extradata.#define CODEC_FLAG2_BPYRAMID 0x00000010 ///< H.264 allow B-frames to be used as references.#define CODEC_FLAG2_WPRED 0x00000020 ///< H.264 weighted biprediction for B-frames#define CODEC_FLAG2_MIXED_REFS 0x00000040 ///< H.264 one reference per partition, as opposed to one reference per macroblock#define CODEC_FLAG2_8X8DCT 0x00000080 ///< H.264 high profile 8x8 transform#define CODEC_FLAG2_FASTPSKIP 0x00000100 ///< H.264 fast pskip#define CODEC_FLAG2_AUD 0x00000200 ///< H.264 access unit delimiters#define CODEC_FLAG2_BRDO 0x00000400 ///< B-frame rate-distortion optimization#define CODEC_FLAG2_INTRA_VLC 0x00000800 ///< Use MPEG-2 intra VLC table.#define CODEC_FLAG2_MEMC_ONLY 0x00001000 ///< Only do ME/MC (I frames -> ref, P frame -> ME+MC).#define CODEC_FLAG2_DROP_FRAME_TIMECODE 0x00002000 ///< timecode is in drop frame format.#define CODEC_FLAG2_SKIP_RD 0x00004000 ///< RD optimal MB level residual skipping#define CODEC_FLAG2_CHUNKS 0x00008000 ///< Input bitstream might be truncated at a packet boundaries instead of only at frame boundaries.#define CODEC_FLAG2_NON_LINEAR_QUANT 0x00010000 ///< Use MPEG-2 nonlinear quantizer.#define CODEC_FLAG2_BIT_RESERVOIR 0x00020000 ///< Use a bit reservoir when encoding if possible/* Unsupported options : * Syntax Arithmetic coding (SAC) * Reference Picture Selection * Independent Segment Decoding *//* /Fx *//* codec capabilities */#define CODEC_CAP_DRAW_HORIZ_BAND 0x0001 ///< Decoder can use draw_horiz_band callback./** * Codec uses get_buffer() for allocating buffers. * direct rendering method 1 */#define CODEC_CAP_DR1 0x0002/* If 'parse_only' field is true, then avcodec_parse_frame() can be used. */#define CODEC_CAP_PARSE_ONLY 0x0004#define CODEC_CAP_TRUNCATED 0x0008/* Codec can export data for HW decoding (XvMC). */#define CODEC_CAP_HWACCEL 0x0010/** * Codec has a nonzero delay and needs to be fed with NULL at the end to get the delayed data. * If this is not set, the codec is guaranteed to never be fed with NULL data. */#define CODEC_CAP_DELAY 0x0020/** * Codec can be fed a final frame with a smaller size. * This can be used to prevent truncation of the last audio samples. */#define CODEC_CAP_SMALL_LAST_FRAME 0x0040//The following defines may change, don't expect compatibility if you use them.#define MB_TYPE_INTRA4x4 0x0001#define MB_TYPE_INTRA16x16 0x0002 //FIXME H.264-specific#define MB_TYPE_INTRA_PCM 0x0004 //FIXME H.264-specific#define MB_TYPE_16x16 0x0008#define MB_TYPE_16x8 0x0010#define MB_TYPE_8x16 0x0020#define MB_TYPE_8x8 0x0040#define MB_TYPE_INTERLACED 0x0080#define MB_TYPE_DIRECT2 0x0100 //FIXME#define MB_TYPE_ACPRED 0x0200#define MB_TYPE_GMC 0x0400#define MB_TYPE_SKIP 0x0800#define MB_TYPE_P0L0 0x1000#define MB_TYPE_P1L0 0x2000#define MB_TYPE_P0L1 0x4000#define MB_TYPE_P1L1 0x8000#define MB_TYPE_L0 (MB_TYPE_P0L0 | MB_TYPE_P1L0)#define MB_TYPE_L1 (MB_TYPE_P0L1 | MB_TYPE_P1L1)#define MB_TYPE_L0L1 (MB_TYPE_L0 | MB_TYPE_L1)#define MB_TYPE_QUANT 0x00010000#define MB_TYPE_CBP 0x00020000//Note bits 24-31 are reserved for codec specific use (h264 ref0, mpeg1 0mv, ...)/** * Pan Scan area. * This specifies the area which should be displayed. * Note there may be multiple such areas for one frame. */typedef struct AVPanScan{ /** * id * - encoding: Set by user. * - decoding: Set by libavcodec. */ int id; /** * width and height in 1/16 pel * - encoding: Set by user. * - decoding: Set by libavcodec. */ int width; int height; /** * position of the top left corner in 1/16 pel for up to 3 fields/frames * - encoding: Set by user. * - decoding: Set by libavcodec. */ int16_t position[3][2];}AVPanScan;#define FF_COMMON_FRAME \ /**\ * pointer to the picture planes.\ * This might be different from the first allocated byte\ * - encoding: \ * - decoding: \ */\ uint8_t *data[4];\ int linesize[4];\ /**\ * pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer.\ * This isn't used by libavcodec unless the default get/release_buffer() is used.\ * - encoding: \ * - decoding: \ */\ uint8_t *base[4];\ /**\ * 1 -> keyframe, 0-> not\ * - encoding: Set by libavcodec.\ * - decoding: Set by libavcodec.\ */\ int key_frame;\\ /**\ * Picture type of the frame, see ?_TYPE below.\ * - encoding: Set by libavcodec. for coded_picture (and set by user for input).\ * - decoding: Set by libavcodec.\ */\ int pict_type;\\ /**\ * presentation timestamp in time_base units (time when frame should be shown to user)\ * If AV_NOPTS_VALUE then frame_rate = 1/time_base will be assumed.\ * - encoding: MUST be set by user.\ * - decoding: Set by libavcodec.\ */\ int64_t pts;\\ /**\ * picture number in bitstream order\ * - encoding: set by\ * - decoding: Set by libavcodec.\ */\ int coded_picture_number;\ /**\ * picture number in display order\ * - encoding: set by\ * - decoding: Set by libavcodec.\ */\ int display_picture_number;\\ /**\ * quality (between 1 (good) and FF_LAMBDA_MAX (bad)) \ * - encoding: Set by libavcodec. for coded_picture (and set by user for input).\ * - decoding: Set by libavcodec.\ */\ int quality; \\ /**\ * buffer age (1->was last buffer and dint change, 2->..., ...).\ * Set to INT_MAX if the buffer has not been used yet.\ * - encoding: unused\ * - decoding: MUST be set by get_buffer().\ */\ int age;\\ /**\ * is this picture used as reference\ * The values for this are the same as the MpegEncContext.picture_structure\ * variable, that is 1->top field, 2->bottom field, 3->frame/both fields.\ * - encoding: unused\ * - decoding: Set by libavcodec. (before get_buffer() call)).\ */\ int reference;\\ /**\ * QP table\ * - encoding: unused\ * - decoding: Set by libavcodec.\ */\ int8_t *qscale_table;\ /**\ * QP store stride\ * - encoding: unused\ * - decoding: Set by libavcodec.\ */\ int qstride;\\ /**\ * mbskip_table[mb]>=1 if MB didn't change\ * stride= mb_width = (width+15)>>4\ * - encoding: unused\ * - decoding: Set by libavcodec.\ */\ uint8_t *mbskip_table;\\ /**\ * motion vector table\ * @code\ * example:\ * int mv_sample_log2= 4 - motion_subsample_log2;\ * int mb_width= (width+15)>>4;\ * int mv_stride= (mb_width << mv_sample_log2) + 1;\ * motion_val[direction][x + y*mv_stride][0->mv_x, 1->mv_y];\ * @endcode\ * - encoding: Set by user.\ * - decoding: Set by libavcodec.\ */\ int16_t (*motion_val[2])[2];\\ /**\ * macroblock type table\ * mb_type_base + mb_width + 2\ * - encoding: Set by user.\ * - decoding: Set by libavcodec.\ */\ uint32_t *mb_type;\\ /**\ * log2 of the size of the block which a single vector in motion_val represents: \ * (4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2)\ * - encoding: unused\ * - decoding: Set by libavcodec.\ */\ uint8_t motion_subsample_log2;\\ /**\ * for some private data of the user\ * - encoding: unused\ * - decoding: Set by user.\ */\ void *opaque;\\ /**\ * error\ * - encoding: Set by libavcodec. if flags&CODEC_FLAG_PSNR.\ * - decoding: unused\ */\ uint64_t error[4];\\ /**\ * type of the buffer (to keep track of who has to deallocate data[*])\ * - encoding: Set by the one who allocates it.\ * - decoding: Set by the one who allocates it.\ * Note: User allocated (direct rendering) & internal buffers cannot coexist currently.\ */\ int type;\ \ /**\ * When decoding, this signals how much the picture must be delayed.\ * extra_delay = repeat_pict / (2*fps)\ * - encoding: unused\ * - decoding: Set by libavcodec.\ */\ int repeat_pict;\ \ /**\ * \ */\ int qscale_type;\ \ /**\ * The content of the picture is interlaced.\ * - encoding: Set by user.\ * - decoding: Set by libavcodec. (default 0)\ */\ int interlaced_frame;\ \ /**\ * If the content is interlaced, is top field displayed first.\ * - encoding: Set by user.\ * - decoding: Set by libavcodec.\ */\ int top_field_first;\ \ /**\ * Pan scan.\ * - encoding: Set by user.\ * - decoding: Set by libavcodec.\ */\ AVPanScan *pan_scan;\ \ /**\ * Tell user application that palette has changed from previous frame.\ * - encoding: ??? (no palette-enabled encoder yet)\ * - decoding: Set by libavcodec. (default 0).\ */\ int palette_has_changed;\ \ /**\ * codec suggestion on buffer type if != 0\ * - encoding: unused\ * - decoding: Set by libavcodec. (before get_buffer() call)).\ */\ int buffer_hints;\\ /**\ * DCT coefficients\ * - encoding: unused\ * - decoding: Set by libavcodec.\ */\ short *dct_coeff;\\ /**\ * motion referece frame index\ * - encoding: Set by user.\ * - decoding: Set by libavcodec.\ */\ int8_t *ref_index[2];#define FF_QSCALE_TYPE_MPEG1 0#define FF_QSCALE_TYPE_MPEG2 1#define FF_QSCALE_TYPE_H264 2#define FF_BUFFER_TYPE_INTERNAL 1#define FF_BUFFER_TYPE_USER 2 ///< direct rendering buffers (image is (de)allocated by user)#define FF_BUFFER_TYPE_SHARED 4 ///< Buffer from somewhere else; don't deallocate image (data/base), all other tables are not shared.#define FF_BUFFER_TYPE_COPY 8 ///< Just a (modified) copy of some other buffer, don't deallocate anything.#define FF_I_TYPE 1 ///< Intra#define FF_P_TYPE 2 ///< Predicted#define FF_B_TYPE 3 ///< Bi-dir predicted#define FF_S_TYPE 4 ///< S(GMC)-VOP MPEG4#define FF_SI_TYPE 5 ///< Switching Intra#define FF_SP_TYPE 6 ///< Switching Predicted#define FF_BI_TYPE 7#define FF_BUFFER_HINTS_VALID 0x01 // Buffer hints value is meaningful (if 0 ignore).#define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer.#define FF_BUFFER_HINTS_PRESERVE 0x04 // User must not alter buffer content.#define FF_BUFFER_HINTS_REUSABLE 0x08 // Codec will reuse the buffer (update)./** * Audio Video Frame. * New fields can be added to the end of FF_COMMON_FRAME with minor version * bumps. * Removal, reordering and changes to existing fields require a major * version bump. No fields should be added into AVFrame before or after * FF_COMMON_FRAME! * sizeof(AVFrame) must not be used outside libav*. */typedef struct AVFrame { FF_COMMON_FRAME} AVFrame;#define DEFAULT_FRAME_RATE_BASE 1001000/** * main external API structure. * New fields can be added to the end with minor version bumps. * Removal, reordering and changes to existing fields require a major * version bump. * sizeof(AVCodecContext) must not be used outside libav*. */typedef struct AVCodecContext { /** * information on struct for av_log * - set by avcodec_alloc_context */ const AVClass *av_class; /** * the average bitrate * - encoding: Set by user; unused for constant quantizer encoding. * - decoding: Set by libavcodec. 0 or some bitrate if this info is available in the stream. */ int bit_rate; /** * number of bits the bitstream is allowed to diverge from the reference. * the reference can be CBR (for CBR pass1) or VBR (for pass2) * - encoding: Set by user; unused for constant quantizer encoding. * - decoding: unused */ int bit_rate_tolerance; /** * CODEC_FLAG_*. * - encoding: Set by user. * - decoding: Set by user. */ int flags; /** * Some codecs need additional format info. It is stored here. * If any muxer uses this then ALL demuxers/parsers AND encoders for the * specific codec MUST set it correctly otherwise stream copy breaks. * In general use of this field by muxers is not recommanded. * - encoding: Set by libavcodec. * - decoding: Set by libavcodec. (FIXME: Is this OK?) */ int sub_id; /** * Motion estimation algorithm used for video coding. * 1 (zero), 2 (full), 3 (log), 4 (phods), 5 (epzs), 6 (x1), 7 (hex), * 8 (umh), 9 (iter), 10 (tesa) [7, 8, 10 are x264 specific, 9 is snow specific] * - encoding: MUST be set by user. * - decoding: unused */ int me_method; /** * some codecs need / can use extradata like Huffman tables. * mjpeg: Huffman tables * rv10: additional flags * mpeg4: global headers (they can be in the bitstream or here) * The allocated memory should be FF_INPUT_BUFFER_PADDING_SIZE bytes larger * than extradata_size to avoid prolems if it is read with the bitstream reader. * The bytewise contents of extradata must not depend on the architecture or CPU endianness. * - encoding: Set/allocated/freed by libavcodec. * - decoding: Set/allocated/freed by user. */ uint8_t *extradata; int extradata_size; /** * This is the fundamental unit of time (in seconds) in terms * of which frame timestamps are represented. For fixed-fps content, * timebase should be 1/framerate and timestamp increments should be * identically 1. * - encoding: MUST be set by user. * - decoding: Set by libavcodec. */ AVRational time_base; /* video only */ /** * picture width / height. * - encoding: MUST be set by user. * - decoding: Set by libavcodec. * Note: For compatibility it is possible to set this instead of * coded_width/height before decoding. */ int width, height;#define FF_ASPECT_EXTENDED 15 /** * the number of pictures in a group of pictures, or 0 for intra_only * - encoding: Set by user. * - decoding: unused */ int gop_size; /** * Pixel format, see PIX_FMT_xxx. * - encoding: Set by user. * - decoding: Set by libavcodec. */ enum PixelFormat pix_fmt; /** * Frame rate emulation. If not zero, the lower layer (i.e. format handler)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -