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 */