- for (i = 0; i < pwd->nb_block_sizes; i++)
- imdct_end(pwd->mdct_ctx[i]);
- if (pwd->ahi.use_exp_vlc)
- free_vlc(&pwd->exp_vlc);
- if (pwd->use_noise_coding)
- free_vlc(&pwd->hgain_vlc);
- for (i = 0; i < 2; i++) {
- free_vlc(&pwd->coef_vlc[i]);
- free(pwd->run_table[i]);
- free(pwd->level_table[i]);
- }
-}
-
-static void init_coef_vlc(struct vlc *vlc, uint16_t **prun_table,
- uint16_t **plevel_table, const struct coef_vlc_table *vlc_table)
-{
- int n = vlc_table->n;
- const uint8_t *table_bits = vlc_table->huffbits;
- const uint32_t *table_codes = vlc_table->huffcodes;
- const uint16_t *levels_table = vlc_table->levels;
- uint16_t *run_table, *level_table;
- int i, l, j, k, level;
-
- init_vlc(vlc, VLCBITS, n, table_bits, table_codes, 4);
-
- run_table = para_malloc(n * sizeof(uint16_t));
- level_table = para_malloc(n * sizeof(uint16_t));
+ init_vlc(dst, VLCBITS, n, src->huffbits, src->huffcodes, 4);
+ pwd->run_table[didx] = para_malloc(n * sizeof(uint16_t));
+ pwd->level_table[didx] = para_malloc(n * sizeof(uint16_t));