⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avcodec.h

📁 ffmpeg源码分析
💻 H
📖 第 1 页 / 共 5 页
字号:
#ifndef AVCODEC_H#define AVCODEC_H/** * @file avcodec.h * external api header. */#ifdef __cplusplusextern "C" {#endif#include "avutil.h"#include <sys/types.h> /* size_t *///FIXME the following 2 really dont belong in here#define FFMPEG_VERSION_INT      0x000409#define FFMPEG_VERSION          "CVS"#define AV_STRINGIFY(s)         AV_TOSTRING(s)#define AV_TOSTRING(s) #s#define LIBAVCODEC_VERSION_INT  ((51<<16)+(8<<8)+0)#define LIBAVCODEC_VERSION      51.8.0#define LIBAVCODEC_BUILD        LIBAVCODEC_VERSION_INT#define LIBAVCODEC_IDENT        "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)#define AV_NOPTS_VALUE          int64_t_C(0x8000000000000000)#define AV_TIME_BASE            1000000#define AV_TIME_BASE_Q          (AVRational){1, AV_TIME_BASE}enum 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_H261,    CODEC_ID_H263,    CODEC_ID_RV10,    CODEC_ID_RV20,    CODEC_ID_MJPEG,    CODEC_ID_MJPEGB,    CODEC_ID_LJPEG,    CODEC_ID_SP5X,    CODEC_ID_JPEGLS,    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_HUFFYUV,    CODEC_ID_CYUV,    CODEC_ID_H264,    CODEC_ID_INDEO3,    CODEC_ID_VP3,    CODEC_ID_THEORA,    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_MSZH,    CODEC_ID_ZLIB,    CODEC_ID_QTRLE,    CODEC_ID_SNOW,    CODEC_ID_TSCC,    CODEC_ID_ULTI,    CODEC_ID_QDRAW,    CODEC_ID_VIXL,    CODEC_ID_QPEG,    CODEC_ID_XVID,    CODEC_ID_PNG,    CODEC_ID_PPM,    CODEC_ID_PBM,    CODEC_ID_PGM,    CODEC_ID_PGMYUV,    CODEC_ID_PAM,    CODEC_ID_FFVHUFF,    CODEC_ID_RV30,    CODEC_ID_RV40,    CODEC_ID_VC9,    CODEC_ID_WMV3,    CODEC_ID_LOCO,    CODEC_ID_WNV1,    CODEC_ID_AASC,    CODEC_ID_INDEO2,    CODEC_ID_FRAPS,    CODEC_ID_TRUEMOTION2,    CODEC_ID_BMP,    CODEC_ID_CSCD,    CODEC_ID_MMVIDEO,    CODEC_ID_ZMBV,    CODEC_ID_AVS,    CODEC_ID_SMACKVIDEO,    CODEC_ID_NUV,    /* various pcm "codecs" */    CODEC_ID_PCM_S16LE= 0x10000,    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,    CODEC_ID_PCM_S32LE,    CODEC_ID_PCM_S32BE,    CODEC_ID_PCM_U32LE,    CODEC_ID_PCM_U32BE,    CODEC_ID_PCM_S24LE,    CODEC_ID_PCM_S24BE,    CODEC_ID_PCM_U24LE,    CODEC_ID_PCM_U24BE,    CODEC_ID_PCM_S24DAUD,    /* various adpcm codecs */    CODEC_ID_ADPCM_IMA_QT= 0x11000,    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,    CODEC_ID_ADPCM_CT,    CODEC_ID_ADPCM_SWF,    CODEC_ID_ADPCM_YAMAHA,    CODEC_ID_ADPCM_SBPRO_4,    CODEC_ID_ADPCM_SBPRO_3,    CODEC_ID_ADPCM_SBPRO_2,    /* AMR */    CODEC_ID_AMR_NB= 0x12000,    CODEC_ID_AMR_WB,    /* RealAudio codecs*/    CODEC_ID_RA_144= 0x13000,    CODEC_ID_RA_288,    /* various DPCM codecs */    CODEC_ID_ROQ_DPCM= 0x14000,    CODEC_ID_INTERPLAY_DPCM,    CODEC_ID_XAN_DPCM,    CODEC_ID_SOL_DPCM,    CODEC_ID_MP2= 0x15000,    CODEC_ID_MP3, /* prefered ID for MPEG Audio layer 1, 2 or3 decoding */    CODEC_ID_AAC,    CODEC_ID_MPEG4AAC,    CODEC_ID_AC3,    CODEC_ID_DTS,    CODEC_ID_VORBIS,    CODEC_ID_DVAUDIO,    CODEC_ID_WMAV1,    CODEC_ID_WMAV2,    CODEC_ID_MACE3,    CODEC_ID_MACE6,    CODEC_ID_VMDAUDIO,    CODEC_ID_SONIC,    CODEC_ID_SONIC_LS,    CODEC_ID_FLAC,    CODEC_ID_MP3ADU,    CODEC_ID_MP3ON4,    CODEC_ID_SHORTEN,    CODEC_ID_ALAC,    CODEC_ID_WESTWOOD_SND1,    CODEC_ID_GSM,    CODEC_ID_QDM2,    CODEC_ID_COOK,    CODEC_ID_TRUESPEECH,    CODEC_ID_TTA,    CODEC_ID_SMACKAUDIO,    CODEC_ID_OGGTHEORA= 0x16000,    /* subtitle codecs */    CODEC_ID_DVD_SUBTITLE= 0x17000,    CODEC_ID_DVB_SUBTITLE,    CODEC_ID_MPEG2TS= 0x20000, /* _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,    CODEC_TYPE_SUBTITLE,};/* currently unused, may be used if 24/32 bits samples ever supported *//* all in native endian */enum SampleFormat {    SAMPLT_FMT_NONE = -1,    SAMPLE_FMT_U8,              ///< unsigned 8 bits    SAMPLE_FMT_S16,             ///< signed 16 bits    SAMPLE_FMT_S24,             ///< signed 24 bits    SAMPLE_FMT_S32,             ///< signed 32 bits    SAMPLE_FMT_FLT,             ///< float};/* in bytes */#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio/** * 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/** * minimum encoding buffer size. * used to avoid some checks during header writing */#define FF_MIN_BUFFER_SIZE 16384/* motion estimation type, EPZS by default */enum Motion_Est_ID {    ME_ZERO = 1,    ME_FULL,    ME_LOG,    ME_PHODS,    ME_EPZS,    ME_X1,    ME_HEX,    ME_UMH,    ME_ITER,};enum AVDiscard{//we leave some space between them for extensions (drop some keyframes for intra only or drop just some bidir frames)    AVDISCARD_NONE   =-16, ///< discard nothing    AVDISCARD_DEFAULT=  0, ///< discard useless packets like 0 size packets in avi    AVDISCARD_NONREF =  8, ///< discard all non reference    AVDISCARD_BIDIR  = 16, ///< discard all bidirectional frames    AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes    AVDISCARD_ALL    = 48, ///< discard all};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 16/* encoding support   these flags can be passed in AVCodecContext.flags before initing   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///< don't 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#define CODEC_FLAG2_FAST          0x00000001 ///< allow non spec compliant speedup tricks#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 multiple references per partition#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/* 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/** * codec has a non zero delay and needs to be feeded with NULL at the end to get the delayed data. * if this is not set, the codec is guranteed to never be feeded with NULL data */#define CODEC_CAP_DELAY           0x0020//the following defines may change, don't expect compatibility if you 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 isn't 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 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\

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -