struct vlc coef_vlc[2];
uint16_t *run_table[2];
uint16_t *level_table[2];
- uint16_t *int_table[2];
const struct coef_vlc_table *coef_vlcs[2];
/* frame info */
int frame_len; ///< frame length in samples
free_vlc(&pwd->coef_vlc[i]);
free(pwd->run_table[i]);
free(pwd->level_table[i]);
- free(pwd->int_table[i]);
}
}
-/* XXX: use same run/length optimization as mpeg decoders */
-//FIXME maybe split decode / encode or pass flag
static void init_coef_vlc(struct vlc *vlc, uint16_t **prun_table,
- uint16_t **plevel_table, uint16_t **pint_table,
- const struct coef_vlc_table *vlc_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_table;
+ 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));
- int_table = para_malloc(n * sizeof(uint16_t));
i = 2;
level = 1;
k = 0;
while (i < n) {
- int_table[k] = i;
l = levels_table[k++];
for (j = 0; j < l; j++) {
run_table[i] = j;
}
*prun_table = run_table;
*plevel_table = level_table;
- *pint_table = int_table;
}
/* compute the scale factor band sizes for each MDCT block size */
pwd->coef_vlcs[0] = &coef_vlcs[coef_vlc_table * 2];
pwd->coef_vlcs[1] = &coef_vlcs[coef_vlc_table * 2 + 1];
init_coef_vlc(&pwd->coef_vlc[0], &pwd->run_table[0], &pwd->level_table[0],
- &pwd->int_table[0], pwd->coef_vlcs[0]);
+ pwd->coef_vlcs[0]);
init_coef_vlc(&pwd->coef_vlc[1], &pwd->run_table[1], &pwd->level_table[1],
- &pwd->int_table[1], pwd->coef_vlcs[1]);
+ pwd->coef_vlcs[1]);
return 0;
}