提交 d81c5983 编写于 作者: F Fabrice Bellard

fixed multiple allocation bug

Originally committed as revision 675 to svn://svn.ffmpeg.org/ffmpeg/trunk
上级 9f4f81ed
......@@ -760,68 +760,73 @@ static void init_h263_dc_for_msmpeg4(void)
/* 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);
}
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);
if (!done) {
done = 1;
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(&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(&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(&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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册