?? avcodec.h
字號:
#ifndef AVCODEC_H#define AVCODEC_H/** * @file avcodec.h * external api header. */#ifdef __cplusplusextern "C" {#endif#include "common.h"#include "rational.h"#ifndef WINCE //sys/types.h
//#include <sys/types.h> /* size_t */
#endif#define FFMPEG_VERSION_INT 0x000408#define FFMPEG_VERSION "0.4.8"#define LIBAVCODEC_BUILD 4708#define LIBAVCODEC_VERSION_INT FFMPEG_VERSION_INT#define LIBAVCODEC_VERSION FFMPEG_VERSION#define AV_STRINGIFY(s) AV_TOSTRING(s)#define AV_TOSTRING(s) #s#define LIBAVCODEC_IDENT "FFmpeg" LIBAVCODEC_VERSION "b" AV_STRINGIFY(LIBAVCODEC_BUILD)#define AV_NOPTS_VALUE int64_t_C(0x8000000000000000)#define AV_TIME_BASE 1000000enum CodecID { CODEC_ID_NONE, CODEC_ID_MPEG1VIDEO, CODEC_ID_MPEG2VIDEO, /* prefered ID for MPEG Video 1 or 2 decoding */ CODEC_ID_MPEG2VIDEO_XVMC, CODEC_ID_H263, CODEC_ID_RV10, CODEC_ID_RV20, CODEC_ID_MP2, CODEC_ID_MP3, /* prefered ID for MPEG Audio layer 1, 2 or3 decoding */ CODEC_ID_VORBIS, CODEC_ID_AC3, CODEC_ID_MJPEG, CODEC_ID_MJPEGB, CODEC_ID_LJPEG, CODEC_ID_SP5X, CODEC_ID_MPEG4, CODEC_ID_RAWVIDEO, CODEC_ID_MSMPEG4V1, CODEC_ID_MSMPEG4V2, CODEC_ID_MSMPEG4V3, CODEC_ID_WMV1, CODEC_ID_WMV2, CODEC_ID_H263P, CODEC_ID_H263I, CODEC_ID_FLV1, CODEC_ID_SVQ1, CODEC_ID_SVQ3, CODEC_ID_DVVIDEO, CODEC_ID_DVAUDIO, CODEC_ID_WMAV1, CODEC_ID_WMAV2, CODEC_ID_MACE3, CODEC_ID_MACE6, CODEC_ID_HUFFYUV, CODEC_ID_CYUV, CODEC_ID_H264, CODEC_ID_INDEO3, CODEC_ID_VP3, CODEC_ID_THEORA, CODEC_ID_AAC, CODEC_ID_MPEG4AAC, CODEC_ID_ASV1, CODEC_ID_ASV2, CODEC_ID_FFV1, CODEC_ID_4XM, CODEC_ID_VCR1, CODEC_ID_CLJR, CODEC_ID_MDEC, CODEC_ID_ROQ, CODEC_ID_INTERPLAY_VIDEO, CODEC_ID_XAN_WC3, CODEC_ID_XAN_WC4, CODEC_ID_RPZA, CODEC_ID_CINEPAK, CODEC_ID_WS_VQA, CODEC_ID_MSRLE, CODEC_ID_MSVIDEO1, CODEC_ID_IDCIN, CODEC_ID_8BPS, CODEC_ID_SMC, CODEC_ID_FLIC, CODEC_ID_TRUEMOTION1, CODEC_ID_VMDVIDEO, CODEC_ID_VMDAUDIO, CODEC_ID_MSZH, CODEC_ID_ZLIB, CODEC_ID_QTRLE, /* various pcm "codecs" */ CODEC_ID_PCM_S16LE, CODEC_ID_PCM_S16BE, CODEC_ID_PCM_U16LE, CODEC_ID_PCM_U16BE, CODEC_ID_PCM_S8, CODEC_ID_PCM_U8, CODEC_ID_PCM_MULAW, CODEC_ID_PCM_ALAW, /* various adpcm codecs */ CODEC_ID_ADPCM_IMA_QT, CODEC_ID_ADPCM_IMA_WAV, CODEC_ID_ADPCM_IMA_DK3, CODEC_ID_ADPCM_IMA_DK4, CODEC_ID_ADPCM_IMA_WS, CODEC_ID_ADPCM_IMA_SMJPEG, CODEC_ID_ADPCM_MS, CODEC_ID_ADPCM_4XM, CODEC_ID_ADPCM_XA, CODEC_ID_ADPCM_ADX, CODEC_ID_ADPCM_EA, CODEC_ID_ADPCM_G726, /* AMR */ CODEC_ID_AMR_NB, CODEC_ID_AMR_WB, /* RealAudio codecs*/ CODEC_ID_RA_144, CODEC_ID_RA_288, /* various DPCM codecs */ CODEC_ID_ROQ_DPCM, CODEC_ID_INTERPLAY_DPCM, CODEC_ID_XAN_DPCM, CODEC_ID_FLAC, CODEC_ID_MPEG2TS, /* _FAKE_ codec to indicate a raw MPEG2 transport stream (only used by libavformat) */};/* CODEC_ID_MP3LAME is absolete */#define CODEC_ID_MP3LAME CODEC_ID_MP3enum CodecType { CODEC_TYPE_UNKNOWN = -1, CODEC_TYPE_VIDEO, CODEC_TYPE_AUDIO, CODEC_TYPE_DATA,};/** * Pixel format. Notes: * * PIX_FMT_RGBA32 is handled in an endian-specific manner. A RGBA * color is put together as: * (A << 24) | (R << 16) | (G << 8) | B * This is stored as BGRA on little endian CPU architectures and ARGB on * big endian CPUs. * * When the pixel format is palettized RGB (PIX_FMT_PAL8), the palettized * image data is stored in AVFrame.data[0]. The palette is transported in * AVFrame.data[1] and, is 1024 bytes long (256 4-byte entries) and is * formatted the same as in PIX_FMT_RGBA32 described above (i.e., it is * also endian-specific). Note also that the individual RGB palette * components stored in AVFrame.data[1] should be in the range 0..255. * This is important as many custom PAL8 video codecs that were designed * to run on the IBM VGA graphics adapter use 6-bit palette components. */enum PixelFormat { PIX_FMT_YUV420P, ///< Planar YUV 4:2:0 (1 Cr & Cb sample per 2x2 Y samples) PIX_FMT_YUV422, PIX_FMT_RGB24, ///< Packed pixel, 3 bytes per pixel, RGBRGB... PIX_FMT_BGR24, ///< Packed pixel, 3 bytes per pixel, BGRBGR... PIX_FMT_YUV422P, ///< Planar YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples) PIX_FMT_YUV444P, ///< Planar YUV 4:4:4 (1 Cr & Cb sample per 1x1 Y samples) PIX_FMT_RGBA32, ///< Packed pixel, 4 bytes per pixel, BGRABGRA..., stored in cpu endianness PIX_FMT_YUV410P, ///< Planar YUV 4:1:0 (1 Cr & Cb sample per 4x4 Y samples) PIX_FMT_YUV411P, ///< Planar YUV 4:1:1 (1 Cr & Cb sample per 4x1 Y samples) PIX_FMT_RGB565, ///< always stored in cpu endianness PIX_FMT_RGB555, ///< always stored in cpu endianness, most significant bit to 1 PIX_FMT_GRAY8, PIX_FMT_MONOWHITE, ///< 0 is white PIX_FMT_MONOBLACK, ///< 0 is black PIX_FMT_PAL8, ///< 8 bit with RGBA palette PIX_FMT_YUVJ420P, ///< Planar YUV 4:2:0 full scale (jpeg) PIX_FMT_YUVJ422P, ///< Planar YUV 4:2:2 full scale (jpeg) PIX_FMT_YUVJ444P, ///< Planar YUV 4:4:4 full scale (jpeg) PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing(xvmc_render.h) PIX_FMT_XVMC_MPEG2_IDCT, PIX_FMT_NB,};/* currently unused, may be used if 24/32 bits samples ever supported */enum SampleFormat { SAMPLE_FMT_S16 = 0, ///< signed 16 bits };/* in bytes */#define AVCODEC_MAX_AUDIO_FRAME_SIZE 131072/** * Required number of additionally allocated bytes at the end of the input bitstream for decoding. * this is mainly needed because some optimized bitstream readers read * 32 or 64 bit at once and could read over the end<br> * Note, if the first 23 bits of the additional bytes are not 0 then damaged * MPEG bitstreams could cause overread and segfault */#define FF_INPUT_BUFFER_PADDING_SIZE 8/* motion estimation type, EPZS by default */enum Motion_Est_ID { ME_ZERO = 1, ME_FULL, ME_LOG, ME_PHODS, ME_EPZS, ME_X1};typedef struct RcOverride{ int start_frame; int end_frame; int qscale; // if this is 0 then quality_factor will be used instead float quality_factor;} RcOverride;/* only for ME compatiblity with old apps */extern int motion_estimation_method;#define FF_MAX_B_FRAMES 8/* encoding support these flags can be passed in AVCodecContext.flags before initing Note: note not everything is supported yet */#define CODEC_FLAG_QSCALE 0x0002 ///< use fixed qscale #define CODEC_FLAG_4MV 0x0004 ///< 4 MV per MB allowed / Advanced prediction for H263#define CODEC_FLAG_QPEL 0x0010 ///< use qpel MC #define CODEC_FLAG_GMC 0x0020 ///< use GMC #define CODEC_FLAG_MV0 0x0040 ///< always try a MB with MV=<0,0> #define CODEC_FLAG_PART 0x0080 ///< use data partitioning /* parent program gurantees that the input for b-frame containing streams is not written to for at least s->max_b_frames+1 frames, if this is not set than the input will be copied */#define CODEC_FLAG_INPUT_PRESERVED 0x0100#define CODEC_FLAG_PASS1 0x0200 ///< use internal 2pass ratecontrol in first pass mode #define CODEC_FLAG_PASS2 0x0400 ///< use internal 2pass ratecontrol in second pass mode #define CODEC_FLAG_EXTERN_HUFF 0x1000 ///< use external huffman table (for mjpeg) #define CODEC_FLAG_GRAY 0x2000 ///< only decode/encode grayscale #define CODEC_FLAG_EMU_EDGE 0x4000///< dont draw edges #define CODEC_FLAG_PSNR 0x8000 ///< error[?] variables will be set during encoding #define CODEC_FLAG_TRUNCATED 0x00010000 /** input bitstream might be truncated at a random location instead of only at frame boundaries */#define CODEC_FLAG_NORMALIZE_AQP 0x00020000 ///< normalize adaptive quantization #define CODEC_FLAG_INTERLACED_DCT 0x00040000 ///< use interlaced dct #define CODEC_FLAG_LOW_DELAY 0x00080000 ///< force low delay#define CODEC_FLAG_ALT_SCAN 0x00100000 ///< use alternate scan #define CODEC_FLAG_TRELLIS_QUANT 0x00200000 ///< use trellis quantization #define CODEC_FLAG_GLOBAL_HEADER 0x00400000 ///< place global headers in extradata instead of every keyframe #define CODEC_FLAG_BITEXACT 0x00800000 ///< use only bitexact stuff (except (i)dct) /* Fx : Flag for h263+ extra options */#define CODEC_FLAG_H263P_AIC 0x01000000 ///< H263 Advanced intra coding / MPEG4 AC prediction (remove this)#define CODEC_FLAG_AC_PRED 0x01000000 ///< H263 Advanced intra coding / MPEG4 AC prediction#define CODEC_FLAG_H263P_UMV 0x02000000 ///< Unlimited motion vector #define CODEC_FLAG_CBP_RD 0x04000000 ///< use rate distortion optimization for cbp#define CODEC_FLAG_QP_RD 0x08000000 ///< use rate distortion optimization for qp selectioon#define CODEC_FLAG_H263P_AIV 0x00000008 ///< H263 Alternative inter vlc#define CODEC_FLAG_OBMC 0x00000001 ///< OBMC#define CODEC_FLAG_LOOP_FILTER 0x00000800 ///< loop filter#define CODEC_FLAG_H263P_SLICE_STRUCT 0x10000000#define CODEC_FLAG_INTERLACED_ME 0x20000000 ///< interlaced motion estimation#define CODEC_FLAG_SVCD_SCAN_OFFSET 0x40000000 ///< will reserve space for SVCD scan offset user data#define CODEC_FLAG_CLOSED_GOP 0x80000000/* Unsupported options : * Syntax Arithmetic coding (SAC) * Reference Picture Selection * Independant 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//the following defines might change, so dont expect compatibility if u use them#define MB_TYPE_INTRA4x4 0x0001#define MB_TYPE_INTRA16x16 0x0002 //FIXME h264 specific#define MB_TYPE_INTRA_PCM 0x0004 //FIXME h264 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 lavc */ int id; /** * width and height in 1/16 pel * - encoding: set by user. * - decoding: set by lavc */ 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 lavc */ 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 isnt used by lavc unless the default get/release_buffer() is used\ * - encoding: \ * - decoding: \ */\ uint8_t *base[4];\ /**\ * 1 -> keyframe, 0-> not\ * - encoding: set by lavc\ * - decoding: set by lavc\ */\ int key_frame;\\ /**\ * picture type of the frame, see ?_TYPE below.\ * - encoding: set by lavc for coded_picture (and set by user for input)\ * - decoding: set by lavc\ */\ int pict_type;\\ /**\ * presentation timestamp in AV_TIME_BASE (=micro seconds currently) (time when frame should be shown to user)\ * if AV_NOPTS_VALUE then the frame_rate will be used as reference\ * - 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;\ /**\
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -