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

📄 avcodec.h

📁 mpeg4 video codec mpeg4 video codec
💻 H
📖 第 1 页 / 共 5 页
字号:
#ifndef AVCODEC_H#define AVCODEC_H/** * @file avcodec.h * external api header. */#ifndef __KEVINLIB__	#include "ffcodecs.h"	#include "ffImgfmt.h"#endif#ifdef __cplusplusextern "C" {#endif #ifdef HAVE_AV_CONFIG_H#include "common.h"#endif#include "libavutil/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)+(1<<8)+0)#define LIBAVCODEC_VERSION      51.1.0#define LIBAVCODEC_BUILD       LIBAVCODEC_VERSION_INT#define LIBAVCODEC_IDENT       "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)#define AV_NOPTS_VALUE 0x8000000000000000LL#define AV_TIME_BASE 1000000static const AVRational AV_TIME_BASE_Q={1, AV_TIME_BASE};enum 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 */enum SampleFormat {    SAMPLE_FMT_S16 = 0,         ///< signed 16 bits     SAMPLE_FMT_S32,             ///< signed 32 bits     SAMPLE_FMT_FLT,             ///< float    SAMPLE_FMT_DBL,             ///< double    SAMPLE_I=100,SAMPLE_P};/* in bytes */#define AVCODEC_MAX_AUDIO_FRAME_SIZE (131072*2)/** * 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_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 8/* 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/* 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;\    int64_t rtStart;\\    /**\     * 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;\    \    int mb_width,mb_height,mb_stride,b8_stride;\    int num_sprite_warping_points,real_sprite_warping_points;\    int play_flags;\    /**\     * 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\

⌨️ 快捷键说明

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