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

📄 avcodec.h

📁 ffmpeg源码分析
💻 H
📖 第 1 页 / 共 5 页
字号:
    enum CodecType codec_type; /* see CODEC_TYPE_xxx */    enum CodecID codec_id; /* see CODEC_ID_xxx */    /**     * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').     * this is used to workaround some encoder bugs     * - encoding: set by user, if not then the default based on codec_id will be used     * - decoding: set by user, will be converted to upper case by lavc during init     */    unsigned int codec_tag;    /**     * workaround bugs in encoders which sometimes cannot be detected automatically.     * - encoding: set by user     * - 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_AMV              32#define FF_BUG_AC_VLC           0  ///< will be removed, libavcodec can now handle these non compliant files by default#define FF_BUG_QPEL_CHROMA      64#define FF_BUG_STD_QPEL         128#define FF_BUG_QPEL_CHROMA2     256#define FF_BUG_DIRECT_BLOCKSIZE 512#define FF_BUG_EDGE             1024#define FF_BUG_HPEL_CHROMA      2048#define FF_BUG_DC_CLIP          4096#define FF_BUG_MS               8192 ///< workaround various bugs in microsofts broken decoders//#define FF_BUG_FAKE_SCALABILITY 16 //autodetection should work 100%    /**     * luma single coeff elimination threshold.     * - encoding: set by user     * - decoding: unused     */    int luma_elim_threshold;    /**     * chroma single coeff elimination 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;#define FF_COMPLIANCE_VERY_STRICT   2 ///< strictly conform to a older more strict version of the spec or reference software#define FF_COMPLIANCE_STRICT        1 ///< strictly conform to all the things in the spec no matter what consequences#define FF_COMPLIANCE_NORMAL        0#define FF_COMPLIANCE_INOFFICIAL   -1 ///< allow inofficial extensions#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< allow non standarized experimental things    /**     * 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 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;#define FF_ER_CAREFUL         1#define FF_ER_COMPLIANT       2#define FF_ER_AGGRESSIVE      3#define FF_ER_VERY_AGGRESSIVE 4    /**     * called at the beginning of each frame to get a buffer for it.     * if pic.reference is set then the frame will be read later by lavc     * avcodec_align_dimensions() should be used to find the required width and     * height, as they normally need to be rounded up to the next multiple of 16     * - encoding: unused     * - decoding: set by lavc, user can override     */    int (*get_buffer)(struct AVCodecContext *c, AVFrame *pic);    /**     * called to release buffers which where allocated with get_buffer.     * a released buffer can be reused in get_buffer()     * pic.data[*] must be set to NULL     * - encoding: unused     * - decoding: set by lavc, user can override     */    void (*release_buffer)(struct AVCodecContext *c, AVFrame *pic);    /**     * if 1 the stream has a 1 frame delay during decoding.     * - encoding: set by lavc     * - decoding: set by lavc     */    int has_b_frames;    /**     * number of bytes per packet if constant and known or 0     * used by some WAV based audio codecs     */    int block_align;    int parse_only; /* - decoding only: if true, only parsing is done                       (function avcodec_parse_frame()). The frame                       data is returned. Only MPEG codecs support this now. */    /**     * 0-> h263 quant 1-> mpeg quant.     * - encoding: set by user.     * - decoding: unused     */    int mpeg_quant;    /**     * pass1 encoding statistics output buffer.     * - encoding: set by lavc     * - decoding: unused     */    char *stats_out;    /**     * pass2 encoding statistics input buffer.     * concatenated stuff from stats_out of pass1 should be placed here     * - encoding: allocated/set/freed by user     * - decoding: unused     */    char *stats_in;    /**     * ratecontrol qmin qmax limiting method.     * 0-> clipping, 1-> use a nice continous function to limit qscale wthin qmin/qmax     * - encoding: set by user.     * - decoding: unused     */    float rc_qsquish;    float rc_qmod_amp;    int rc_qmod_freq;    /**     * ratecontrol override, see RcOverride.     * - encoding: allocated/set/freed by user.     * - decoding: unused     */    RcOverride *rc_override;    int rc_override_count;    /**     * rate control equation.     * - encoding: set by user     * - decoding: unused     */    char *rc_eq;    /**     * maximum bitrate.     * - encoding: set by user.     * - decoding: unused     */    int rc_max_rate;    /**     * minimum bitrate.     * - encoding: set by user.     * - decoding: unused     */    int rc_min_rate;    /**     * decoder bitstream buffer size.     * - encoding: set by user.     * - decoding: unused     */    int rc_buffer_size;    float rc_buffer_aggressivity;    /**     * qscale factor between p and i 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 i_quant_factor;    /**     * qscale offset between p and i frames.     * - encoding: set by user.     * - decoding: unused     */    float i_quant_offset;    /**     * initial complexity for pass1 ratecontrol.     * - encoding: set by user.     * - decoding: unused     */    float rc_initial_cplx;    /**     * dct algorithm, see FF_DCT_* below.     * - encoding: set by user     * - decoding: unused     */    int dct_algo;#define FF_DCT_AUTO    0#define FF_DCT_FASTINT 1#define FF_DCT_INT     2#define FF_DCT_MMX     3#define FF_DCT_MLIB    4#define FF_DCT_ALTIVEC 5#define FF_DCT_FAAN    6    /**     * luminance masking (0-> disabled).     * - encoding: set by user     * - decoding: unused     */    float lumi_masking;    /**     * temporary complexity masking (0-> disabled).     * - encoding: set by user     * - decoding: unused     */    float temporal_cplx_masking;    /**     * spatial complexity masking (0-> disabled).     * - encoding: set by user     * - decoding: unused     */    float spatial_cplx_masking;    /**     * p block masking (0-> disabled).     * - encoding: set by user     * - decoding: unused     */    float p_masking;    /**     * darkness masking (0-> disabled).     * - encoding: set by user     * - decoding: unused     */    float dark_masking;    /* for binary compatibility */    int unused;    /**     * idct algorithm, see FF_IDCT_* below.     * - encoding: set by user     * - decoding: set by user     */    int idct_algo;#define FF_IDCT_AUTO         0#define FF_IDCT_INT          1#define FF_IDCT_SIMPLE       2#define FF_IDCT_SIMPLEMMX    3#define FF_IDCT_LIBMPEG2MMX  4#define FF_IDCT_PS2          5#define FF_IDCT_MLIB         6#define FF_IDCT_ARM          7#define FF_IDCT_ALTIVEC      8#define FF_IDCT_SH4          9#define FF_IDCT_SIMPLEARM    10#define FF_IDCT_H264         11#define FF_IDCT_VP3          12#define FF_IDCT_IPP          13#define FF_IDCT_XVIDMMX      14    /**     * slice count.     * - encoding: set by lavc     * - decoding: set by user (or 0)     */    int slice_count;    /**     * slice offsets in the frame in bytes.     * - encoding: set/allocated by lavc     * - decoding: set/allocated by user (or NULL)     */    int *slice_offset;    /**     * error concealment flags.     * - encoding: unused     * - decoding: set by user     */    int error_concealment;#define FF_EC_GUESS_MVS   1#define FF_EC_DEBLOCK     2    /**     * dsp_mask could be add used to disable unwanted CPU features     * CPU features (i.e. MMX, SSE. ...)     *     * with FORCE flag you may instead enable given CPU features     * (Dangerous: usable in case of misdetection, improper usage however will     * result into program crash)     */    unsigned dsp_mask;#define FF_MM_FORCE    0x80000000 /* force usage of selected flags (OR) */    /* lower 16 bits - CPU features */#ifdef HAVE_MMX#define FF_MM_MMX      0x0001 /* standard MMX */#define FF_MM_3DNOW    0x0004 /* AMD 3DNOW */#define FF_MM_MMXEXT   0x0002 /* SSE integer functions or AMD MMX ext */#define FF_MM_SSE      0x0008 /* SSE functions */#define FF_MM_SSE2     0x0010 /* PIV SSE2 functions */#define FF_MM_3DNOWEXT 0x0020 /* AMD 3DNowExt */#endif /* HAVE_MMX */#ifdef HAVE_IWMMXT#define FF_MM_IWMMXT   0x0100 /* XScale IWMMXT */#endif /* HAVE_IWMMXT */    /**     * bits per sample/pixel from the demuxer (needed for huffyuv).     * - encoding: set by lavc     * - decoding: set by user     */     int bits_per_sample;    /**     * prediction method (needed for huffyuv).     * - encoding: set by user     * - decoding: unused     */     int prediction_method;#define FF_PRED_LEFT   0#define FF_PRED_PLANE  1#define FF_PRED_MEDIAN 2    /**     * sample aspect ratio (0 if unknown).     * numerator and denominator must be relative prime and smaller then 256 for some video standards     * - encoding: set by user.     * - decoding: set by lavc.     */    AVRational sample_aspect_ratio;    /**     * the picture in the bitstream.     * - encoding: set by lavc     * - decoding: set by lavc     */    AVFrame *coded_frame;    /**     * debug.     * - encoding: set by user.     * - decoding: set by user.     */    int debug;#define FF_DEBUG_PICT_INFO 1#define FF_DEBUG_RC        2#define FF_DEBUG_BITSTREAM 4#define FF_DEBUG_MB_TYPE   8#define FF_DEBUG_QP        16#define FF_DEBUG_MV        32#define FF_DEBUG_DCT_COEFF 0x00000040#define FF_DEBUG_SKIP      0x00000080#define FF_DEBUG_STARTCODE 0x00000100#define FF_DEBUG_PTS       0x00000200#define FF_DEBUG_ER        0x00000400#define FF_DEBUG_MMCO      0x00000800#define FF_DEBUG_BUGS      0x00001000#define FF_DEBUG_VIS_QP    0x00002000#define FF_DEBUG_VIS_MB_TYPE 0x00004000    /**     * debug.     * - encoding: set by user.     * - decoding: set by user.     */    int debug_mv;#define FF_DEBUG_VIS_MV_P_FOR  0x00000001 //visualize forward predicted MVs of P frames#define FF_DEBUG_VIS_MV_B_FOR  0x00000002 //visualize forward predicted MVs of B frames#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames    /**     * error.     * - encoding: set by lavc if flags&CODEC_FLAG_PSNR     * - decoding: unused     */    uint64_t error[4];    /**     * minimum MB quantizer.     * - encoding: unused     * - decoding: unused     */    int mb_qmin;    /**     * maximum MB quantizer.     * - encoding: unused     * - decoding: unused     */    int mb_qmax;    /**     * motion estimation compare function.     * - encoding: set by user.     * - decoding: unused     */    int me_cmp;    /**     * subpixel motion estimation compare function.     * - encoding: set by user.     * - decoding: unused     */    int me_sub_cmp;    /**     * macroblock compare function (not supported yet).     * - encoding: set by user.     * - decoding: unused     */    int mb_cmp;    /**     * interlaced dct compare function     * - encoding: set by user.     * - decoding: unused     */    int ildct_cmp;#define FF_CMP_SAD  0#define FF_CMP_SSE  1#define FF_CMP_SATD 2#define FF_CMP_DCT  3#define FF_CMP_PSNR 4#define FF_CMP_BIT  5#define FF_CMP_RD   6#define FF_CMP_ZERO 7#define FF_CMP_VSAD 8#define FF_CMP_VSSE 9#define FF_CMP_NSSE 10#define FF_CMP_W53  11#define FF_CMP_W97  12#define FF_CMP_DCTMAX 13#define FF_CMP_DCT264 14#define FF_CMP_CHROMA 256    /**     * ME diamond size & shape.     * - encoding: set by user.     * - decoding: unused     */

⌨️ 快捷键说明

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