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

📄 avcodec.h

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.7平台上编译为嵌入式图形界面操作系统。
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef AVCODEC_H#define AVCODEC_H#include "common.h"#define LIBAVCODEC_VERSION_INT 0x000406#define LIBAVCODEC_VERSION     "0.4.6"#define LIBAVCODEC_BUILD       4640#define LIBAVCODEC_BUILD_STR   "4640"enum CodecID {    CODEC_ID_NONE,     CODEC_ID_MPEG1VIDEO,    CODEC_ID_H263,    CODEC_ID_RV10,    CODEC_ID_MP2,    CODEC_ID_MP3LAME,    CODEC_ID_VORBIS,    CODEC_ID_AC3,    CODEC_ID_MJPEG,    CODEC_ID_MJPEGB,    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_SVQ1,    CODEC_ID_DVVIDEO,    CODEC_ID_DVAUDIO,    CODEC_ID_WMAV1,    CODEC_ID_WMAV2,    CODEC_ID_MACE3,    CODEC_ID_MACE6,    CODEC_ID_HUFFYUV,    /* 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_MS,};enum CodecType {    CODEC_TYPE_UNKNOWN = -1,    CODEC_TYPE_VIDEO,    CODEC_TYPE_AUDIO,};enum PixelFormat {    PIX_FMT_ANY = -1,    PIX_FMT_YUV420P,    PIX_FMT_YUV422,    PIX_FMT_RGB24,    PIX_FMT_BGR24,    PIX_FMT_YUV422P,    PIX_FMT_YUV444P,    PIX_FMT_RGBA32,    PIX_FMT_BGRA32,    PIX_FMT_YUV410P,    PIX_FMT_YUV411P,    PIX_FMT_RGB565,    PIX_FMT_RGB555,//    PIX_FMT_RGB5551,    PIX_FMT_BGR565,    PIX_FMT_BGR555,//    PIX_FMT_GBR565,//    PIX_FMT_GBR555};/* 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 zero bytes at the end of the input bitstream for decoding. * to avoid overreading (and possibly segfaulting) */#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;/* ME algos sorted by quality */static const int Motion_Est_QTab[] = { ME_ZERO, ME_PHODS, ME_LOG,                                        ME_X1, ME_EPZS, ME_FULL };#define FF_MAX_B_FRAMES 4/* encoding support   these flags can be passed in AVCodecContext.flags before initing    Note: note not everything is supported yet */#define CODEC_FLAG_HQ     0x0001  /* brute force MB-type decission mode (slow) */#define CODEC_FLAG_QSCALE 0x0002  /* use fixed qscale */#define CODEC_FLAG_4MV    0x0004  /* 4 MV per MB allowed */#define CODEC_FLAG_QPEL   0x0010  /* use qpel MC */#define CODEC_FLAG_GMC    0x0020  /* use GMC */#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_DR1    0x8000  /* direct renderig type 1 (store internal frames in external buffers) */#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 / will fail on b frames */#define CODEC_FLAG_ALT_SCAN       0x00100000 /* use alternate scan *//* codec capabilities */#define CODEC_CAP_DRAW_HORIZ_BAND 0x0001 /* decoder can use draw_horiz_band callback */#define CODEC_CAP_DR1             0x0002 /* direct rendering method 1 *//* if 'parse_only' field is true, then avcodec_parse_frame() can be   used */#define CODEC_CAP_PARSE_ONLY      0x0004#define CODEC_CAP_TRUNCATED       0x0008#define FRAME_RATE_BASE 10000typedef struct AVCodecContext {    /**     * 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     * encoding: 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)     * encoding: set/allocated/freed by lavc.     * decoding: set/allocated/freed by user.     */    void *extradata;    int extradata_size;        /* video only */    /**     * frames per sec multiplied by FRAME_RATE_BASE     * for variable fps this is the precission, so if the timestamps      * can be specified in msec precssion then this is 1000*FRAME_RATE_BASE     * encoding: set by user     * decoding: set by lavc. 0 or the frame_rate if available     */    int frame_rate;    /**     * encoding: set by user.     * decoding: set by user, some codecs might override / change it during playback     */    int width, height;        /**     * Obsolete, will be removed     */    int aspect_ratio_info;#define FF_ASPECT_SQUARE 1#define FF_ASPECT_4_3_625 2#define FF_ASPECT_4_3_525 3#define FF_ASPECT_16_9_625 4#define FF_ASPECT_16_9_525 5#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: unused     * decoding: set by lavc.     */    enum PixelFormat pix_fmt;        int repeat_pict; /* when decoding, this signal how much the picture */                     /* must be delayed.                                */                     /* extra_delay = (repeat_pict / 2) * (1/fps)       */        /**     * 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.     */    void (*draw_horiz_band)(struct AVCodecContext *s,                            UINT8 **src_ptr, int linesize,                            int y, int width, int height);    /* audio only */    int sample_rate; /* samples per sec */    int channels;    int sample_fmt;  /* sample format, currenly unused */    /* the following data should not be initialized */    int frame_size;     /* in samples, initialized when calling 'init' */    int frame_number;   /* audio or video frame number */    int real_pict_num;  /* returns the real picture number of                           previous encoded frame */                               /**     * 1 -> keyframe, 0-> not     * encoding: set by lavc (for the outputed bitstream, not the input frame)     * decoding: set by lavc (for the decoded  bitstream, not the displayed frame)     */    int key_frame;    /**     * picture type of the previous en/decoded frame, see ?_TYPE below     * encoding: set by lavc (for the outputed bitstream, not the input frame)     * decoding: set by lavc (for the decoded  bitstream, not the displayed frame)     */    int pict_type;/* FIXME: these should have FF_ */#define I_TYPE 1 // Intra#define P_TYPE 2 // Predicted#define B_TYPE 3 // Bi-dir predicted#define S_TYPE 4 // S(GMC)-VOP MPEG4    /**     * number of frames the decoded output will be delayed relative to      * the encoded input     * encoding: set by lavc.     * decoding: unused     */    int delay;    /**     * mbskip_table[mb]=1 if MB didnt change, is only valid for I/P frames      * stride= mb_width = (width+15)>>4 (FIXME export stride?)     * encoding: unused     * decoding: set by lavc     */    uint8_t *mbskip_table;        /* encoding parameters */    /**     * quality (between 1 (good) and 31 (bad))      * encoding: set by user if CODEC_FLAG_QSCALE is set otherwise set by lavc     * decoding: set by lavc     */    int quality;      /* quality of the previous encoded frame                                                   this is allso used to set the quality in vbr mode                         and the per frame quality in CODEC_FLAG_TYPE (second pass mode) */    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;    int b_frame_strategy;    /**     * 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;    /* The following data is for RTP friendly coding */    /* By now only H.263/H.263+/MPEG4 coder honours this   */    int rtp_mode;   /* 1 for activate RTP friendly-mode           */                    /* highers numbers represent more error-prone */                    /* enviroments, by now just "1" exist         */        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 callcack: This function is called  */    /* every time the encoder as a packet to send */    /* Depends on the encoder if the data starts  */    /* with a Start Code (it should) H.263 does   */    void (*rtp_callback)(void *data, int size, int packet_number);     /**     * if you set get_psnr to 1 then after encoding you will have the      * PSNR on psnr_y/cb/cr     * encoding: set by user (1-> on, 0-> off)     * decoding: unused     */    int get_psnr;    float psnr_y;    float psnr_cb;    float psnr_cr;        /* statistics, used for 2-pass encoding */    int mv_bits;    int header_bits;    int i_tex_bits;    int p_tex_bits;    int i_count;    int p_count;    int skip_count;    int misc_bits;        /**     * number of bits used for the previously encoded frame     * encoding: set by lavc     * decoding: - for audio - bits_per_sample     */    int frame_bits;                     /**     * private data of the user, can be used to carry app specific stuff     * encoding: set by user     * decoding: set by user     */    void *opaque;    char codec_name[32];    enum CodecType codec_type; /* see CODEC_TYPE_xxx */    enum CodecID codec_id; /* see CODEC_ID_xxx */    unsigned int codec_tag;  /* codec tag, only used if unknown codec */        /**     * workaround bugs in encoders which sometimes cannot be detected automatically     * encoding: unused     * decoding: set by user     */    int workaround_bugs;#define FF_BUG_AUTODETECT       1  //autodetection#define FF_BUG_OLD_MSMPEG4      2#define FF_BUG_XVID_ILACE       4#define FF_BUG_UMP4             8#define FF_BUG_NO_PADDING       16#define FF_BUG_AC_VLC           32#define FF_BUG_QPEL_CHROMA      64//#define FF_BUG_FAKE_SCALABILITY 16 //autodetection should work 100%            /**     * encoding: set by user     * decoding: unused     */    int luma_elim_threshold;        /**     * encoding: set by user     * decoding: unused     */    int chroma_elim_threshold;        /**     * strictly follow the std (MPEG4, ...)     * encoding: set by user     * decoding: unused     */    int strict_std_compliance;        /**     * qscale offset between ip and b frames     * if > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset)     * if < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset)     * encoding: set by user.     * decoding: unused     */    float b_quant_offset;        /**     * error resilience {-1,0,1} higher values will detect more errors but may missdetect     * some more or less valid parts as errors     * encoding: unused     * decoding: set by user     */    int error_resilience;        /**     * obsolete, just here to keep ABI compatible (should be removed perhaps, dunno)     */    int *quant_store;    /**     * QP store stride     * encoding: unused     * decoding: set by lavc     */    int qstride;        /**     * buffer, where the next picture should be decoded into     * encoding: unused     * decoding: set by user in get_buffer_callback to a buffer into which the next part     *           of the bitstream will be decoded, and set by lavc at end of frame to the     *           next frame which needs to be displayed     */    uint8_t *dr_buffer[3];        /**     * stride of the luminance part of the dr buffer     * encoding: unused     * decoding: set by user     */    int dr_stride;        /**     * same behavior as dr_buffer, just for some private data of the user     * encoding: unused     * decoding: set by user in get_buffer_callback, and set by lavc at end of frame     */    void *dr_opaque_frame;        /**     * called at the beginning of each frame to get a buffer for it     * encoding: unused     * decoding: set by user     */    int (*get_buffer_callback)(struct AVCodecContext *c, int width, int height, int pict_type);    /**     * is 1 if the decoded stream contains b frames, 0 otherwise     * encoding: unused     * decoding: set by lavc     */

⌨️ 快捷键说明

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