changeset 815:78accc54493b libavcodec

put a few large tables under #ifdef CONFIG_ENCODERS or dynamically allocate them
author michaelni
date Thu, 31 Oct 2002 16:11:03 +0000
parents 8f31ed5bacd1
children bd3ce84d7ab1
files h263.c mpegvideo.c
diffstat 2 files changed, 30 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/h263.c	Thu Oct 31 12:11:53 2002 +0000
+++ b/h263.c	Thu Oct 31 16:11:03 2002 +0000
@@ -49,6 +49,7 @@
 #define MB_TYPE_B_VLC_BITS 4
 #define TEX_VLC_BITS 9
 
+#ifdef CONFIG_ENCODERS
 static void h263_encode_block(MpegEncContext * s, DCTELEM * block,
 			      int n);
 static void h263_encode_motion(MpegEncContext * s, int val, int fcode);
@@ -56,6 +57,8 @@
 static inline void mpeg4_encode_block(MpegEncContext * s, DCTELEM * block,
 			       int n, int dc, UINT8 *scan_table, 
                                PutBitContext *dc_pb, PutBitContext *ac_pb);
+#endif
+
 static int h263_decode_motion(MpegEncContext * s, int pred, int fcode);
 static int h263p_decode_umotion(MpegEncContext * s, int pred);
 static int h263_decode_block(MpegEncContext * s, DCTELEM * block,
@@ -69,15 +72,16 @@
 static void mpeg4_decode_sprite_trajectory(MpegEncContext * s);
 static inline int ff_mpeg4_pred_dc(MpegEncContext * s, int n, UINT16 **dc_val_ptr, int *dir_ptr);
 
-
 extern UINT32 inverse[256];
 
-static UINT16 mv_penalty[MAX_FCODE+1][MAX_MV*2+1];
-static UINT8 fcode_tab[MAX_MV*2+1];
-static UINT8 umv_fcode_tab[MAX_MV*2+1];
-
 static UINT16 uni_DCtab_lum  [512][2];
 static UINT16 uni_DCtab_chrom[512][2];
+
+#ifdef CONFIG_ENCODERS
+static UINT16 (*mv_penalty)[MAX_MV*2+1]= NULL;
+static UINT8 fcode_tab[MAX_MV*2+1];
+static UINT8 umv_fcode_tab[MAX_MV*2+1];
+
 static UINT32 uni_mpeg4_intra_rl_bits[64*64*2*2];
 static UINT8  uni_mpeg4_intra_rl_len [64*64*2*2];
 static UINT32 uni_mpeg4_inter_rl_bits[64*64*2*2];
@@ -94,6 +98,8 @@
 max level: 53/16
 max run: 29/41
 */
+#endif
+
 
 int h263_get_picture_format(int width, int height)
 {
@@ -364,6 +370,7 @@
     }
 }
 
+#ifdef CONFIG_ENCODERS
 void mpeg4_encode_mb(MpegEncContext * s,
 		    DCTELEM block[6][64],
 		    int motion_x, int motion_y)
@@ -870,6 +877,7 @@
         }
     }
 }
+#endif
 
 static int h263_pred_dc(MpegEncContext * s, int n, UINT16 **dc_val_ptr)
 {
@@ -1061,6 +1069,7 @@
     return mot_val;
 }
 
+#ifdef CONFIG_ENCODERS
 static void h263_encode_motion(MpegEncContext * s, int val, int f_code)
 {
     int range, l, bit_size, sign, code, bits;
@@ -1152,6 +1161,10 @@
 {
     int f_code;
     int mv;
+    
+    if(mv_penalty==NULL)
+        mv_penalty= av_mallocz( sizeof(UINT16)*(MAX_FCODE+1)*(2*MAX_MV+1) );
+    
     for(f_code=1; f_code<=MAX_FCODE; f_code++){
         for(mv=-MAX_MV; mv<=MAX_MV; mv++){
             int len;
@@ -1189,6 +1202,7 @@
         umv_fcode_tab[mv]= 1;
     }
 }
+#endif
 
 static void init_uni_dc_tab(void)
 {
@@ -1242,6 +1256,7 @@
     }
 }
 
+#ifdef CONFIG_ENCODERS
 static void init_uni_mpeg4_rl_tab(RLTable *rl, UINT32 *bits_tab, UINT8 *len_tab){
     int slevel, run, last;
     
@@ -1434,6 +1449,7 @@
 	    }
     }
 }
+#endif
 
 /***************************************************/
 /**
@@ -1832,7 +1848,7 @@
     }
 #endif
 }
-
+#ifdef CONFIG_ENCODERS
 static inline void mpeg4_encode_block(MpegEncContext * s, DCTELEM * block, int n, int intra_dc, 
                                UINT8 *scan_table, PutBitContext *dc_pb, PutBitContext *ac_pb)
 {
@@ -1948,7 +1964,7 @@
     }
 #endif
 }
-
+#endif
 
 
 /***********************************************/
--- a/mpegvideo.c	Thu Oct 31 12:11:53 2002 +0000
+++ b/mpegvideo.c	Thu Oct 31 16:11:03 2002 +0000
@@ -85,7 +85,7 @@
     0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
 };
 
-static UINT16 default_mv_penalty[MAX_FCODE+1][MAX_MV*2+1];
+static UINT16 (*default_mv_penalty)[MAX_MV*2+1]=NULL;
 static UINT8 default_fcode_tab[MAX_MV*2+1];
 
 /* default motion estimation */
@@ -684,6 +684,8 @@
         if(!done){
             int i;
             done=1;
+
+            default_mv_penalty= av_mallocz( sizeof(UINT16)*(MAX_FCODE+1)*(2*MAX_MV+1) );
             memset(default_mv_penalty, 0, sizeof(UINT16)*(MAX_FCODE+1)*(2*MAX_MV+1));
             memset(default_fcode_tab , 0, sizeof(UINT8)*(2*MAX_MV+1));
 
@@ -706,12 +708,14 @@
     if (MPV_common_init(s) < 0)
         return -1;
     
+#ifdef CONFIG_ENCODERS
     if (s->out_format == FMT_H263)
         h263_encode_init(s);
     else if (s->out_format == FMT_MPEG1)
         ff_mpeg1_encode_init(s);
     if(s->msmpeg4_version)
         ff_msmpeg4_encode_init(s);
+#endif
 
     /* init default q matrix */
     for(i=0;i<64;i++) {
@@ -2389,6 +2393,7 @@
         s->block[5][0]= 128;
     }
 
+#ifdef CONFIG_ENCODERS
     /* huffman encode */
     switch(s->out_format) {
     case FMT_MPEG1:
@@ -2406,6 +2411,7 @@
         mjpeg_encode_mb(s, s->block);
         break;
     }
+#endif
 }
 
 void ff_copy_bits(PutBitContext *pb, UINT8 *src, int length)