Mercurial > libavcodec.hg
diff mpegvideo.h @ 500:460bc2ba363e libavcodec
wmv1 support
author | michaelni |
---|---|
date | Tue, 18 Jun 2002 00:50:20 +0000 |
parents | 1ca0876f99bc |
children | c9f724e3a797 |
line wrap: on
line diff
--- a/mpegvideo.h Tue Jun 18 00:49:00 2002 +0000 +++ b/mpegvideo.h Tue Jun 18 00:50:20 2002 +0000 @@ -41,6 +41,10 @@ #define ME_MAP_SHIFT 3 #define ME_MAP_MV_BITS 11 +/* run length table */ +#define MAX_RUN 64 +#define MAX_LEVEL 64 + typedef struct Predictor{ double coeff; double count; @@ -143,6 +147,8 @@ int last_dc[3]; /* last DC values for MPEG1 */ INT16 *dc_val[3]; /* used for mpeg4 DC prediction, all 3 arrays must be continuous */ int y_dc_scale, c_dc_scale; + UINT8 *y_dc_scale_table; /* qscale -> y_dc_scale table */ + UINT8 *c_dc_scale_table; /* qscale -> c_dc_scale table */ UINT8 *coded_block; /* used for coded block pattern prediction (msmpeg4v3, wmv1)*/ INT16 (*ac_val[3])[16]; /* used for for mpeg4 AC prediction, all 3 arrays must be continuous */ int ac_pred; @@ -376,7 +382,18 @@ 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 */ + 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; + UINT8 *inter_scantable; + UINT8 *intra_scantable; + UINT8 *intra_v_scantable; + UINT8 *intra_h_scantable; + /* [mb_intra][isChroma][level][run][last] */ + int ac_stats[2][2][MAX_LEVEL+1][MAX_RUN+1][2]; + + /* decompression specific */ GetBitContext gb; @@ -452,19 +469,16 @@ /* mpeg12.c */ extern INT16 default_intra_matrix[64]; extern INT16 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 mpeg1_encode_init(MpegEncContext *s); +void ff_mpeg1_encode_init(MpegEncContext *s); /* h263enc.c */ -/* run length table */ -#define MAX_RUN 64 -#define MAX_LEVEL 64 - typedef struct RLTable { int n; /* number of entries of table_vlc minus 1 */ int last; /* number of values for last = 0 */ @@ -491,6 +505,8 @@ return index + level - 1; } +extern UINT8 ff_mpeg4_y_dc_scale_table[32]; +extern UINT8 ff_mpeg4_c_dc_scale_table[32]; void h263_encode_mb(MpegEncContext *s, DCTELEM block[6][64], int motion_x, int motion_y); @@ -499,7 +515,6 @@ 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); -void h263_dc_scale(MpegEncContext *s); INT16 *h263_pred_motion(MpegEncContext * s, int block, int *px, int *py); void mpeg4_pred_ac(MpegEncContext * s, INT16 *block, int n, @@ -523,6 +538,7 @@ void ff_mpeg4_stuffing(PutBitContext * pbc); void ff_mpeg4_init_partitions(MpegEncContext *s); void ff_mpeg4_merge_partitions(MpegEncContext *s); +extern inline int ff_mpeg4_pred_dc(MpegEncContext * s, int n, UINT16 **dc_val_ptr, int *dir_ptr); /* rv10.c */ void rv10_encode_picture_header(MpegEncContext *s, int picture_number); @@ -538,8 +554,8 @@ int msmpeg4_decode_ext_header(MpegEncContext * s, int buf_size); int msmpeg4_decode_mb(MpegEncContext *s, DCTELEM block[6][64]); -int msmpeg4_decode_init_vlc(MpegEncContext *s); -void ff_old_msmpeg4_dc_scale(MpegEncContext *s); +int ff_msmpeg4_decode_init(MpegEncContext *s); +void ff_msmpeg4_encode_init(MpegEncContext *s); /* mjpegenc.c */