Fix static leaks in h264.c.
Patch by Art Clarke aclarke A vlideshow D com Originally committed as revision 14538 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
45260d4faa
commit
910e366817
@ -49,13 +49,28 @@
|
||||
#define DELAYED_PIC_REF 4
|
||||
|
||||
static VLC coeff_token_vlc[4];
|
||||
static VLC_TYPE coeff_token_vlc_tables[520+332+280+256][2];
|
||||
static const int coeff_token_vlc_tables_size[4]={520,332,280,256};
|
||||
|
||||
static VLC chroma_dc_coeff_token_vlc;
|
||||
static VLC_TYPE chroma_dc_coeff_token_vlc_table[256][2];
|
||||
static const int chroma_dc_coeff_token_vlc_table_size = 256;
|
||||
|
||||
static VLC total_zeros_vlc[15];
|
||||
static VLC_TYPE total_zeros_vlc_tables[15][512][2];
|
||||
static const int total_zeros_vlc_tables_size = 512;
|
||||
|
||||
static VLC chroma_dc_total_zeros_vlc[3];
|
||||
static VLC_TYPE chroma_dc_total_zeros_vlc_tables[3][8][2];
|
||||
static const int chroma_dc_total_zeros_vlc_tables_size = 8;
|
||||
|
||||
static VLC run_vlc[6];
|
||||
static VLC_TYPE run_vlc_tables[6][8][2];
|
||||
static const int run_vlc_tables_size = 8;
|
||||
|
||||
static VLC run7_vlc;
|
||||
static VLC_TYPE run7_vlc_table[96][2];
|
||||
static const int run7_vlc_table_size = 96;
|
||||
|
||||
static void svq3_luma_dc_dequant_idct_c(DCTELEM *block, int qp);
|
||||
static void svq3_add_idct_c(uint8_t *dst, DCTELEM *block, int stride, int qp, int dc);
|
||||
@ -1937,37 +1952,67 @@ static av_cold void decode_init_vlc(void){
|
||||
|
||||
if (!done) {
|
||||
int i;
|
||||
int offset;
|
||||
done = 1;
|
||||
|
||||
chroma_dc_coeff_token_vlc.table = chroma_dc_coeff_token_vlc_table;
|
||||
chroma_dc_coeff_token_vlc.table_allocated = chroma_dc_coeff_token_vlc_table_size;
|
||||
init_vlc(&chroma_dc_coeff_token_vlc, CHROMA_DC_COEFF_TOKEN_VLC_BITS, 4*5,
|
||||
&chroma_dc_coeff_token_len [0], 1, 1,
|
||||
&chroma_dc_coeff_token_bits[0], 1, 1, 1);
|
||||
&chroma_dc_coeff_token_bits[0], 1, 1,
|
||||
INIT_VLC_USE_NEW_STATIC);
|
||||
|
||||
offset = 0;
|
||||
for(i=0; i<4; i++){
|
||||
coeff_token_vlc[i].table = coeff_token_vlc_tables+offset;
|
||||
coeff_token_vlc[i].table_allocated = coeff_token_vlc_tables_size[i];
|
||||
init_vlc(&coeff_token_vlc[i], COEFF_TOKEN_VLC_BITS, 4*17,
|
||||
&coeff_token_len [i][0], 1, 1,
|
||||
&coeff_token_bits[i][0], 1, 1, 1);
|
||||
&coeff_token_bits[i][0], 1, 1,
|
||||
INIT_VLC_USE_NEW_STATIC);
|
||||
offset += coeff_token_vlc_tables_size[i];
|
||||
}
|
||||
/*
|
||||
* This is a one time safety check to make sure that
|
||||
* the packed static coeff_token_vlc table sizes
|
||||
* were initialized correctly.
|
||||
*/
|
||||
assert(offset == sizeof(coeff_token_vlc_tables)/(sizeof(VLC_TYPE)*2));
|
||||
|
||||
for(i=0; i<3; i++){
|
||||
init_vlc(&chroma_dc_total_zeros_vlc[i], CHROMA_DC_TOTAL_ZEROS_VLC_BITS, 4,
|
||||
chroma_dc_total_zeros_vlc[i].table = chroma_dc_total_zeros_vlc_tables[i];
|
||||
chroma_dc_total_zeros_vlc[i].table_allocated = chroma_dc_total_zeros_vlc_tables_size;
|
||||
init_vlc(&chroma_dc_total_zeros_vlc[i],
|
||||
CHROMA_DC_TOTAL_ZEROS_VLC_BITS, 4,
|
||||
&chroma_dc_total_zeros_len [i][0], 1, 1,
|
||||
&chroma_dc_total_zeros_bits[i][0], 1, 1, 1);
|
||||
&chroma_dc_total_zeros_bits[i][0], 1, 1,
|
||||
INIT_VLC_USE_NEW_STATIC);
|
||||
}
|
||||
for(i=0; i<15; i++){
|
||||
init_vlc(&total_zeros_vlc[i], TOTAL_ZEROS_VLC_BITS, 16,
|
||||
total_zeros_vlc[i].table = total_zeros_vlc_tables[i];
|
||||
total_zeros_vlc[i].table_allocated = total_zeros_vlc_tables_size;
|
||||
init_vlc(&total_zeros_vlc[i],
|
||||
TOTAL_ZEROS_VLC_BITS, 16,
|
||||
&total_zeros_len [i][0], 1, 1,
|
||||
&total_zeros_bits[i][0], 1, 1, 1);
|
||||
&total_zeros_bits[i][0], 1, 1,
|
||||
INIT_VLC_USE_NEW_STATIC);
|
||||
}
|
||||
|
||||
for(i=0; i<6; i++){
|
||||
init_vlc(&run_vlc[i], RUN_VLC_BITS, 7,
|
||||
run_vlc[i].table = run_vlc_tables[i];
|
||||
run_vlc[i].table_allocated = run_vlc_tables_size;
|
||||
init_vlc(&run_vlc[i],
|
||||
RUN_VLC_BITS, 7,
|
||||
&run_len [i][0], 1, 1,
|
||||
&run_bits[i][0], 1, 1, 1);
|
||||
&run_bits[i][0], 1, 1,
|
||||
INIT_VLC_USE_NEW_STATIC);
|
||||
}
|
||||
run7_vlc.table = run7_vlc_table,
|
||||
run7_vlc.table_allocated = run7_vlc_table_size;
|
||||
init_vlc(&run7_vlc, RUN7_VLC_BITS, 16,
|
||||
&run_len [6][0], 1, 1,
|
||||
&run_bits[6][0], 1, 1, 1);
|
||||
&run_bits[6][0], 1, 1,
|
||||
INIT_VLC_USE_NEW_STATIC);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user