Mercurial > libavcodec.hg
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)