Mercurial > libavcodec.hg
changeset 483:97da217aed7f libavcodec
fixed multiple allocation bug
author | bellard |
---|---|
date | Thu, 06 Jun 2002 14:31:18 +0000 |
parents | 1a4d5101a224 |
children | f8bbc8976247 |
files | msmpeg4.c |
diffstat | 1 files changed, 59 insertions(+), 54 deletions(-) [+] |
line wrap: on
line diff
--- a/msmpeg4.c Thu Jun 06 14:25:44 2002 +0000 +++ b/msmpeg4.c Thu Jun 06 14:31:18 2002 +0000 @@ -760,68 +760,73 @@ /* init all vlc decoding tables */ int msmpeg4_decode_init_vlc(MpegEncContext *s) { + static int done = 0; int i; MVTable *mv; - for(i=0;i<NB_RL_TABLES;i++) { - init_rl(&rl_table[i]); - init_vlc_rl(&rl_table[i]); - } - for(i=0;i<2;i++) { - mv = &mv_tables[i]; - init_vlc(&mv->vlc, 9, mv->n + 1, - mv->table_mv_bits, 1, 1, - mv->table_mv_code, 2, 2); - } + + if (!done) { + done = 1; - init_vlc(&dc_lum_vlc[0], 9, 120, - &table0_dc_lum[0][1], 8, 4, - &table0_dc_lum[0][0], 8, 4); - init_vlc(&dc_chroma_vlc[0], 9, 120, - &table0_dc_chroma[0][1], 8, 4, - &table0_dc_chroma[0][0], 8, 4); - init_vlc(&dc_lum_vlc[1], 9, 120, - &table1_dc_lum[0][1], 8, 4, - &table1_dc_lum[0][0], 8, 4); - init_vlc(&dc_chroma_vlc[1], 9, 120, - &table1_dc_chroma[0][1], 8, 4, - &table1_dc_chroma[0][0], 8, 4); + for(i=0;i<NB_RL_TABLES;i++) { + init_rl(&rl_table[i]); + init_vlc_rl(&rl_table[i]); + } + for(i=0;i<2;i++) { + mv = &mv_tables[i]; + init_vlc(&mv->vlc, 9, mv->n + 1, + mv->table_mv_bits, 1, 1, + mv->table_mv_code, 2, 2); + } + + init_vlc(&dc_lum_vlc[0], 9, 120, + &table0_dc_lum[0][1], 8, 4, + &table0_dc_lum[0][0], 8, 4); + init_vlc(&dc_chroma_vlc[0], 9, 120, + &table0_dc_chroma[0][1], 8, 4, + &table0_dc_chroma[0][0], 8, 4); + init_vlc(&dc_lum_vlc[1], 9, 120, + &table1_dc_lum[0][1], 8, 4, + &table1_dc_lum[0][0], 8, 4); + init_vlc(&dc_chroma_vlc[1], 9, 120, + &table1_dc_chroma[0][1], 8, 4, + &table1_dc_chroma[0][0], 8, 4); - init_h263_dc_for_msmpeg4(); - init_vlc(&v2_dc_lum_vlc, 9, 512, - &v2_dc_lum_table[0][1], 8, 4, - &v2_dc_lum_table[0][0], 8, 4); - init_vlc(&v2_dc_chroma_vlc, 9, 512, - &v2_dc_chroma_table[0][1], 8, 4, - &v2_dc_chroma_table[0][0], 8, 4); + init_h263_dc_for_msmpeg4(); + init_vlc(&v2_dc_lum_vlc, 9, 512, + &v2_dc_lum_table[0][1], 8, 4, + &v2_dc_lum_table[0][0], 8, 4); + init_vlc(&v2_dc_chroma_vlc, 9, 512, + &v2_dc_chroma_table[0][1], 8, 4, + &v2_dc_chroma_table[0][0], 8, 4); - init_vlc(&cbpy_vlc, 6, 16, - &cbpy_tab[0][1], 2, 1, - &cbpy_tab[0][0], 2, 1); - init_vlc(&v2_intra_cbpc_vlc, 3, 4, - &v2_intra_cbpc[0][1], 2, 1, - &v2_intra_cbpc[0][0], 2, 1); - init_vlc(&v2_mb_type_vlc, 5, 8, - &v2_mb_type[0][1], 2, 1, - &v2_mb_type[0][0], 2, 1); - init_vlc(&v2_mv_vlc, 9, 33, - &mvtab[0][1], 2, 1, - &mvtab[0][0], 2, 1); + init_vlc(&cbpy_vlc, 6, 16, + &cbpy_tab[0][1], 2, 1, + &cbpy_tab[0][0], 2, 1); + init_vlc(&v2_intra_cbpc_vlc, 3, 4, + &v2_intra_cbpc[0][1], 2, 1, + &v2_intra_cbpc[0][0], 2, 1); + init_vlc(&v2_mb_type_vlc, 5, 8, + &v2_mb_type[0][1], 2, 1, + &v2_mb_type[0][0], 2, 1); + init_vlc(&v2_mv_vlc, 9, 33, + &mvtab[0][1], 2, 1, + &mvtab[0][0], 2, 1); - init_vlc(&mb_non_intra_vlc, 9, 128, - &table_mb_non_intra[0][1], 8, 4, - &table_mb_non_intra[0][0], 8, 4); - init_vlc(&mb_intra_vlc, 9, 64, - &table_mb_intra[0][1], 4, 2, - &table_mb_intra[0][0], 4, 2); + init_vlc(&mb_non_intra_vlc, 9, 128, + &table_mb_non_intra[0][1], 8, 4, + &table_mb_non_intra[0][0], 8, 4); + init_vlc(&mb_intra_vlc, 9, 64, + &table_mb_intra[0][1], 4, 2, + &table_mb_intra[0][0], 4, 2); - init_vlc(&v1_intra_cbpc_vlc, 6, 8, - intra_MCBPC_bits, 1, 1, - intra_MCBPC_code, 1, 1); - init_vlc(&v1_inter_cbpc_vlc, 6, 25, - inter_MCBPC_bits, 1, 1, - inter_MCBPC_code, 1, 1); - + init_vlc(&v1_intra_cbpc_vlc, 6, 8, + intra_MCBPC_bits, 1, 1, + intra_MCBPC_code, 1, 1); + init_vlc(&v1_inter_cbpc_vlc, 6, 25, + inter_MCBPC_bits, 1, 1, + inter_MCBPC_code, 1, 1); + } return 0; }