📄 avcodec.h
字号:
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 lavc\
*/\
int64_t pts;\
\
/**\
* picture number in bitstream order.\
* - encoding: set by\
* - decoding: set by lavc\
*/\
int coded_picture_number;\
/**\
* picture number in display order.\
* - encoding: set by\
* - decoding: set by lavc\
*/\
int display_picture_number;\
\
/**\
* quality (between 1 (good) and FF_LAMBDA_MAX (bad)) \
* - encoding: set by lavc for coded_picture (and set by user for input)\
* - decoding: set by lavc\
*/\
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\
* - encoding: unused\
* - decoding: set by lavc (before get_buffer() call))\
*/\
int reference;\
\
/**\
* QP table\
* - encoding: unused\
* - decoding: set by lavc\
*/\
int8_t *qscale_table;\
/**\
* QP store stride\
* - encoding: unused\
* - decoding: set by lavc\
*/\
int qstride;\
\
/**\
* mbskip_table[mb]>=1 if MB didnt change\
* stride= mb_width = (width+15)>>4\
* - encoding: unused\
* - decoding: set by lavc\
*/\
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 lavc\
*/\
int16_t (*motion_val[2])[2];\
\
/**\
* Macroblock type table\
* mb_type_base + mb_width + 2\
* - encoding: set by user\
* - decoding: set by lavc\
*/\
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 lavc\
*/\
uint8_t motion_subsample_log2;\
\
/**\
* for some private data of the user\
* - encoding: unused\
* - decoding: set by user\
*/\
void *opaque;\
\
/**\
* error\
* - encoding: set by lavc if flags&CODEC_FLAG_PSNR\
* - decoding: unused\
*/\
uint64_t error[4];\
\
/**\
* type of the buffer (to keep track of who has to dealloc data[*])\
* - encoding: set by the one who allocs it\
* - decoding: set by the one who allocs it\
* Note: user allocated (direct rendering) & internal buffers can not coexist currently\
*/\
int type;\
\
/**\
* when decoding, this signal how much the picture must be delayed.\
* extra_delay = repeat_pict / (2*fps)\
* - encoding: unused\
* - decoding: set by lavc\
*/\
int repeat_pict;\
\
/**\
* \
*/\
int qscale_type;\
\
/**\
* The content of the picture is interlaced.\
* - encoding: set by user\
* - decoding: set by lavc (default 0)\
*/\
int interlaced_frame;\
\
/**\
* if the content is interlaced, is top field displayed first.\
* - encoding: set by user\
* - decoding: set by lavc\
*/\
int top_field_first;\
\
/**\
* Pan scan.\
* - encoding: set by user\
* - decoding: set by lavc\
*/\
AVPanScan *pan_scan;\
\
/**\
* tell user application that palette has changed from previous frame.\
* - encoding: ??? (no palette-enabled encoder yet)\
* - decoding: set by lavc (default 0)\
*/\
int palette_has_changed;\
\
/**\
* Codec suggestion on buffer type if != 0\
* - encoding: unused\
* - decoding: set by lavc (before get_buffer() call))\
*/\
int buffer_hints;\
\
/**\
* DCT coeffitients\
* - encoding: unused\
* - decoding: set by lavc\
*/\
short *dct_coeff;\
\
/**\
* Motion referece frame index\
* - encoding: set by user\
* - decoding: set by lavc\
*/\
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 dealloc 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 dealloc 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
#define FF_SP_TYPE 6
#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.
*/
typedef struct AVFrame {
FF_COMMON_FRAME
} AVFrame;
#define DEFAULT_FRAME_RATE_BASE 1001000
/**
* Used by av_log
*/
typedef struct AVCLASS AVClass;
struct AVCLASS {
const char* class_name;
const char* (*item_name)(void*); /* actually passing a pointer to an AVCodecContext
or AVFormatContext, which begin with an AVClass.
Needed because av_log is in libavcodec and has no visibility
of AVIn/OutputFormat */
struct AVOption *option;
};
/**
* main external api structure.
*/
typedef struct AVCodecContext {
/**
* Info on struct for av_log
* - set by avcodec_alloc_context
*/
AVClass *av_class;
/**
* the average bitrate.
* - encoding: set by user. unused for constant quantizer encoding
* - decoding: set by lavc. 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 needs additionnal format info. It is stored here
* - encoding: set by user.
* - decoding: set by lavc. (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) [7, 8 are x264 specific, 9 is snow specific]
* - encoding: MUST be set by user.
* - decoding: unused
*/
int me_method;
/**
* some codecs need / can use extra-data 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
* then extradata_size to avoid prolems if its read with the bitstream reader
* the bytewise contents of extradata must not depend on the architecture or cpu endianness
* - encoding: set/allocated/freed by lavc.
* - decoding: set/allocated/freed by user.
*/
void *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 lavc.
*/
AVRational time_base;
/* video only */
/**
* picture width / height.
* - encoding: MUST be set by user.
* - decoding: set by lavc.
* Note, for compatibility its 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 pitures, 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 lavc.
*/
enum PixelFormat pix_fmt;
/**
* Frame rate emulation. If not zero lower layer (i.e. format handler)
* has to read frames at native frame rate.
* - encoding: set by user.
* - decoding: unused.
*/
int rate_emu;
/**
* if non NULL, 'draw_horiz_band' is called by the libavcodec
* decoder to draw an horizontal band. It improve cache usage. Not
* all codecs can do that. You must check the codec capabilities
* before
* - encoding: unused
* - decoding: set by user.
* @param height the height of the slice
* @param y the y position of the slice
* @param type 1->top field, 2->bottom field, 3->frame
* @param offset offset into the AVFrame.data from which the slice should be read
*/
void (*draw_horiz_band)(struct AVCodecContext *s,
const AVFrame *src, int offset[4],
int y, int type, int height);
/* audio only */
int sample_rate; ///< samples per sec
int channels;
/**
* audio sample format.
* - encoding: set by user.
* - decoding: set by lavc.
*/
enum SampleFormat sample_fmt; ///< sample format, currenly unused
/* the following data should not be initialized */
/**
* samples per packet. initialized when calling 'init'
*/
int frame_size;
int frame_number; ///< audio or video frame number
int real_pict_num; ///< returns the real picture number of previous encoded frame
/**
* number of frames the decoded output will be delayed relative to
* the encoded input.
* - encoding: set by lavc.
* - decoding: unused
*/
int delay;
/* - encoding parameters */
float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0)
float qblur; ///< amount of qscale smoothing over time (0.0-1.0)
/**
* minimum quantizer.
* - encoding: set by user.
* - decoding: unused
*/
int qmin;
/**
* maximum quantizer.
* - encoding: set by user.
* - decoding: unused
*/
int qmax;
/**
* maximum quantizer difference etween frames.
* - encoding: set by user.
* - decoding: unused
*/
int max_qdiff;
/**
* maximum number of b frames between non b frames.
* note: the output will be delayed by max_b_frames+1 relative to the input
* - encoding: set by user.
* - decoding: unused
*/
int max_b_frames;
/**
* qscale factor between ip and b frames.
* - encoding: set by user.
* - decoding: unused
*/
float b_quant_factor;
/** obsolete FIXME remove */
int rc_strategy;
#define FF_RC_STRATEGY_XVID 1
int b_frame_strategy;
/**
* hurry up amount.
* deprecated in favor of skip_idct and skip_frame
* - encoding: unused
* - decoding: set by user. 1-> skip b frames, 2-> skip idct/dequant too, 5-> skip everything except header
*/
int hurry_up;
struct AVCodec *codec;
void *priv_data;
/* unused, FIXME remove*/
int rtp_mode;
int rtp_payload_size; /* The size of the RTP payload: the coder will */
/* do it's best to deliver a chunk with size */
/* below rtp_payload_size, the chunk will start */
/* with a start code on some codecs like H.263 */
/* This doesn't take account of any particular */
/* headers inside the transmited RTP payload */
/* The RTP callback: This function is called */
/* every time the encoder has a packet to send */
/* Depends on the encoder if the data starts */
/* with a Start Code (it should) H.263 does. */
/* mb_nb contains the number of macroblocks */
/* encoded in the RTP payload */
void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -