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

📄 mpegvideo.h

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.7平台上编译为嵌入式图形界面操作系统。
💻 H
📖 第 1 页 / 共 2 页
字号:
    int mb_num_left;                 /* number of MBs left in this video packet (for partitioned Slices only)*/    int next_p_frame_damaged;        /* set if the next p frame is damaged, to avoid showing trashed b frames */    int error_resilience;        ParseContext parse_context;    /* H.263 specific */    int gob_number;    int gob_index;            /* H.263+ specific */    int umvplus;    int umvplus_dec;    int h263_aic; /* Advanded INTRA Coding (AIC) */    int h263_aic_dir; /* AIC direction: 0 = left, 1 = top */        /* mpeg4 specific */    int time_increment_resolution;    int time_increment_bits;        /* number of bits to represent the fractional part of time */    int last_time_base;    int time_base;                  /* time in seconds of last I,P,S Frame */    INT64 time;                   /* time of current frame */     INT64 last_non_b_time;    UINT16 pp_time;               /* time distance between the last 2 p,s,i frames */    UINT16 pb_time;               /* time distance between the last b and p,s,i frame */    UINT16 pp_field_time;    UINT16 pb_field_time;         /* like above, just for interlaced */    int shape;    int vol_sprite_usage;    int sprite_width;    int sprite_height;    int sprite_left;    int sprite_top;    int sprite_brightness_change;    int num_sprite_warping_points;    int real_sprite_warping_points;    int sprite_offset[2][2];         /* sprite offset[isChroma][isMVY] */    int sprite_delta[2][2];          /* sprite_delta [isY][isMVY] */     int sprite_shift[2];             /* sprite shift [isChroma] */    int mcsel;    int quant_precision;    int quarter_sample;              /* 1->qpel, 0->half pel ME/MC */     int scalability;    int hierachy_type;    int enhancement_type;    int new_pred;    int reduced_res_vop;    int aspect_ratio_info;    int aspected_width;    int aspected_height;    int sprite_warping_accuracy;    int low_latency_sprite;    int data_partitioning;           /* data partitioning flag from header */    int partitioned_frame;           /* is current frame partitioned */    int rvlc;                        /* reversible vlc */    int resync_marker;               /* could this stream contain resync markers*/    int low_delay;                   /* no reordering needed / has no b-frames */    int vo_type;    int vol_control_parameters;      /* does the stream contain the low_delay flag, used to workaround buggy encoders */    PutBitContext tex_pb;            /* used for data partitioned VOPs */    PutBitContext pb2;               /* used for data partitioned VOPs */#define PB_BUFFER_SIZE 1024*256    uint8_t *tex_pb_buffer;              uint8_t *pb2_buffer;    int mpeg_quant;#define CO_LOCATED_TYPE_4MV     1#define CO_LOCATED_TYPE_FIELDMV 2    INT8 *co_located_type_table;     /* 4mv & field_mv info for next b frame */    INT16 (*field_mv_table)[2][2];   /* used for interlaced b frame decoding */    INT8 (*field_select_table)[2];   /* wtf, no really another table for interlaced b frames */    int t_frame;                     /* time distance of first I -> B, used for interlaced b frames */    int padding_bug_score;           /* used to detect the VERY common padding bug in MPEG4 */    /* divx specific, used to workaround (many) bugs in divx5 */    int divx_version;    int divx_build;#define BITSTREAM_BUFFER_SIZE 1024*256    UINT8 *bitstream_buffer; //Divx 5.01 puts several frames in a single one, this is used to reorder them    int bitstream_buffer_size;        int xvid_build;        /* lavc specific stuff, used to workaround bugs in libavcodec */    int ffmpeg_version;    int lavc_build;        /* RV10 specific */    int rv10_version; /* RV10 version: 0 or 3 */    int rv10_first_dc_coded[3];        /* MJPEG specific */    struct MJpegContext *mjpeg_ctx;    int mjpeg_vsample[3]; /* vertical sampling factors, default = {2, 1, 1} */    int mjpeg_hsample[3]; /* horizontal sampling factors, default = {2, 1, 1} */    int mjpeg_write_tables; /* do we want to have quantisation- and			       huffmantables in the jpeg file ? */    int mjpeg_data_only_frames; /* frames only with SOI, SOS and EOI markers */    /* MSMPEG4 specific */    int mv_table_index;    int rl_table_index;    int rl_chroma_table_index;    int dc_table_index;    int use_skip_mb_code;    int slice_height;      /* in macroblocks */    int first_slice_line;  /* used in mpeg4 too to handle resync markers */    int flipflop_rounding;    int msmpeg4_version;   /* 0=not msmpeg4, 1=mp41, 2=mp42, 3=mp43/divx3 4=wmv1/7 5=wmv2/8*/    int per_mb_rl_table;    int esc3_level_length;    int esc3_run_length;    /* [mb_intra][isChroma][level][run][last] */    int (*ac_stats)[2][MAX_LEVEL+1][MAX_RUN+1][2];    int inter_intra_pred;    /* decompression specific */    GetBitContext gb;    /* MPEG2 specific - I wish I had not to support this mess. */    int progressive_sequence;    int mpeg_f_code[2][2];    int picture_structure;/* picture type */#define PICT_TOP_FIELD     1#define PICT_BOTTOM_FIELD  2#define PICT_FRAME         3    int intra_dc_precision;    int frame_pred_frame_dct;    int top_field_first;    int concealment_motion_vectors;    int q_scale_type;    int intra_vlc_format;    int alternate_scan;    int repeat_first_field;    int chroma_420_type;    int progressive_frame;    int mpeg2;    int full_pel[2];    int interlaced_dct;    int last_qscale;    int first_slice;        /* RTP specific */    /* These are explained on avcodec.h */    int rtp_mode;    int rtp_payload_size;    void (*rtp_callback)(void *data, int size, int packet_number);    UINT8 *ptr_lastgob;    UINT8 *ptr_last_mb_line;    UINT32 mb_line_avgsize;        DCTELEM (*block)[64]; /* points to one of the following blocks */    DCTELEM blocks[2][6][64] __align8; // for HQ mode we need to keep the best block    int (*decode_mb)(struct MpegEncContext *s, DCTELEM block[6][64]); // used by some codecs to avoid a switch()#define SLICE_OK         0#define SLICE_ERROR     -1#define SLICE_END       -2 //end marker found#define SLICE_NOEND     -3 //no end marker or error found but mb count exceeded        void (*dct_unquantize_mpeg1)(struct MpegEncContext *s,                            DCTELEM *block, int n, int qscale);    void (*dct_unquantize_mpeg2)(struct MpegEncContext *s,                            DCTELEM *block, int n, int qscale);    void (*dct_unquantize_h263)(struct MpegEncContext *s,                            DCTELEM *block, int n, int qscale);    void (*dct_unquantize)(struct MpegEncContext *s, // unquantizer to use (mpeg4 can use both)                           DCTELEM *block, int n, int qscale);    int (*dct_quantize)(struct MpegEncContext *s, DCTELEM *block, int n, int qscale, int *overflow);    void (*fdct)(DCTELEM *block/* align 16*/);    void (*idct_put)(UINT8 *dest/*align 8*/, int line_size, DCTELEM *block/*align 16*/);    void (*idct_add)(UINT8 *dest/*align 8*/, int line_size, DCTELEM *block/*align 16*/);} MpegEncContext;int DCT_common_init(MpegEncContext *s);int MPV_common_init(MpegEncContext *s);void MPV_common_end(MpegEncContext *s);void MPV_decode_mb(MpegEncContext *s, DCTELEM block[6][64]);int MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx);void MPV_frame_end(MpegEncContext *s);#ifdef HAVE_MMXvoid MPV_common_init_mmx(MpegEncContext *s);#endif#ifdef ARCH_ALPHAvoid MPV_common_init_axp(MpegEncContext *s);#endif#ifdef HAVE_MLIBvoid MPV_common_init_mlib(MpegEncContext *s);#endif#ifdef HAVE_MMIvoid MPV_common_init_mmi(MpegEncContext *s);#endif#ifdef ARCH_ARMV4Lvoid MPV_common_init_armv4l(MpegEncContext *s);#endif#ifdef ARCH_POWERPCvoid MPV_common_init_ppc(MpegEncContext *s);#endifextern void (*draw_edges)(UINT8 *buf, int wrap, int width, int height, int w);void ff_conceal_past_errors(MpegEncContext *s, int conceal_all);void ff_copy_bits(PutBitContext *pb, UINT8 *src, int length);void ff_clean_intra_table_entries(MpegEncContext *s);void ff_init_scantable(MpegEncContext *s, ScanTable *st, const UINT8 *src_scantable);void ff_error_resilience(MpegEncContext *s);void ff_draw_horiz_band(MpegEncContext *s);extern int ff_bit_exact;static inline void ff_init_block_index(MpegEncContext *s){    s->block_index[0]= s->block_wrap[0]*(s->mb_y*2 + 1) - 1 + s->mb_x*2;    s->block_index[1]= s->block_wrap[0]*(s->mb_y*2 + 1)     + s->mb_x*2;    s->block_index[2]= s->block_wrap[0]*(s->mb_y*2 + 2) - 1 + s->mb_x*2;    s->block_index[3]= s->block_wrap[0]*(s->mb_y*2 + 2)     + s->mb_x*2;    s->block_index[4]= s->block_wrap[4]*(s->mb_y + 1)                    + s->block_wrap[0]*(s->mb_height*2 + 2) + s->mb_x;    s->block_index[5]= s->block_wrap[4]*(s->mb_y + 1 + s->mb_height + 2) + s->block_wrap[0]*(s->mb_height*2 + 2) + s->mb_x;}static inline void ff_update_block_index(MpegEncContext *s){    s->block_index[0]+=2;    s->block_index[1]+=2;    s->block_index[2]+=2;    s->block_index[3]+=2;    s->block_index[4]++;    s->block_index[5]++;}/* motion_est.c */void ff_estimate_p_frame_motion(MpegEncContext * s,                             int mb_x, int mb_y);void ff_estimate_b_frame_motion(MpegEncContext * s,                             int mb_x, int mb_y);int ff_get_best_fcode(MpegEncContext * s, int16_t (*mv_table)[2], int type);void ff_fix_long_p_mvs(MpegEncContext * s);void ff_fix_long_b_mvs(MpegEncContext * s, int16_t (*mv_table)[2], int f_code, int type);/* mpeg12.c */extern const INT16 ff_mpeg1_default_intra_matrix[64];extern const INT16 ff_mpeg1_default_non_intra_matrix[64];extern UINT8 ff_mpeg1_dc_scale_table[128];void mpeg1_encode_picture_header(MpegEncContext *s, int picture_number);void mpeg1_encode_mb(MpegEncContext *s,                     DCTELEM block[6][64],                     int motion_x, int motion_y);void ff_mpeg1_encode_init(MpegEncContext *s);/* h263enc.c */typedef struct RLTable {    int n; /* number of entries of table_vlc minus 1 */    int last; /* number of values for last = 0 */    const UINT16 (*table_vlc)[2];    const INT8 *table_run;    const INT8 *table_level;    UINT8 *index_run[2]; /* encoding only */    INT8 *max_level[2]; /* encoding & decoding */    INT8 *max_run[2];   /* encoding & decoding */    VLC vlc;            /* decoding only deprected FIXME remove*/    RL_VLC_ELEM *rl_vlc[32]; /* decoding only */} RLTable;void init_rl(RLTable *rl);void init_vlc_rl(RLTable *rl);static inline int get_rl_index(const RLTable *rl, int last, int run, int level){    int index;    index = rl->index_run[last][run];    if (index >= rl->n)        return rl->n;    if (level > rl->max_level[last][run])        return rl->n;    return index + level - 1;}extern UINT8 ff_mpeg4_y_dc_scale_table[32];extern UINT8 ff_mpeg4_c_dc_scale_table[32];extern const INT16 ff_mpeg4_default_intra_matrix[64];extern const INT16 ff_mpeg4_default_non_intra_matrix[64];void h263_encode_mb(MpegEncContext *s,                     DCTELEM block[6][64],                    int motion_x, int motion_y);void mpeg4_encode_mb(MpegEncContext *s,                     DCTELEM block[6][64],                    int motion_x, int motion_y);void h263_encode_picture_header(MpegEncContext *s, int picture_number);int h263_encode_gob_header(MpegEncContext * s, int mb_line);INT16 *h263_pred_motion(MpegEncContext * s, int block,                         int *px, int *py);void mpeg4_pred_ac(MpegEncContext * s, INT16 *block, int n,                    int dir);void ff_set_mpeg4_time(MpegEncContext * s, int picture_number);void mpeg4_encode_picture_header(MpegEncContext *s, int picture_number);void h263_encode_init(MpegEncContext *s);void h263_decode_init_vlc(MpegEncContext *s);int h263_decode_picture_header(MpegEncContext *s);int ff_h263_decode_gob_header(MpegEncContext *s);int ff_mpeg4_decode_picture_header(MpegEncContext * s, GetBitContext *gb);int intel_h263_decode_picture_header(MpegEncContext *s);int ff_h263_decode_mb(MpegEncContext *s,                      DCTELEM block[6][64]);int h263_get_picture_format(int width, int height);void ff_mpeg4_encode_video_packet_header(MpegEncContext *s);void ff_mpeg4_clean_buffers(MpegEncContext *s);void ff_mpeg4_stuffing(PutBitContext * pbc);void ff_mpeg4_init_partitions(MpegEncContext *s);void ff_mpeg4_merge_partitions(MpegEncContext *s);void ff_clean_mpeg4_qscales(MpegEncContext *s);void ff_clean_h263_qscales(MpegEncContext *s);int ff_mpeg4_decode_partitions(MpegEncContext *s);int ff_mpeg4_get_video_packet_prefix_length(MpegEncContext *s);int ff_h263_resync(MpegEncContext *s);int ff_h263_get_gob_height(MpegEncContext *s);/* rv10.c */void rv10_encode_picture_header(MpegEncContext *s, int picture_number);int rv_decode_dc(MpegEncContext *s, int n);/* msmpeg4.c */void msmpeg4_encode_picture_header(MpegEncContext * s, int picture_number);void msmpeg4_encode_ext_header(MpegEncContext * s);void msmpeg4_encode_mb(MpegEncContext * s,                        DCTELEM block[6][64],                       int motion_x, int motion_y);int msmpeg4_decode_picture_header(MpegEncContext * s);int msmpeg4_decode_ext_header(MpegEncContext * s, int buf_size);int ff_msmpeg4_decode_init(MpegEncContext *s);void ff_msmpeg4_encode_init(MpegEncContext *s);/* mjpegenc.c */int mjpeg_init(MpegEncContext *s);void mjpeg_close(MpegEncContext *s);void mjpeg_encode_mb(MpegEncContext *s,                      DCTELEM block[6][64]);void mjpeg_picture_header(MpegEncContext *s);void mjpeg_picture_trailer(MpegEncContext *s);/* rate control */int ff_rate_control_init(MpegEncContext *s);float ff_rate_estimate_qscale(MpegEncContext *s);void ff_write_pass1_stats(MpegEncContext *s);void ff_rate_control_uninit(MpegEncContext *s);double ff_eval(char *s, double *const_value, char **const_name,               double (**func1)(void *, double), char **func1_name,                double (**func2)(void *, double, double), char **func2_name,               void *opaque);#endif /* AVCODEC_MPEGVIDEO_H */

⌨️ 快捷键说明

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