|
|
|
@ -933,6 +933,8 @@ static av_cold int atrac3_decode_init(AVCodecContext *avctx) |
|
|
|
|
int i; |
|
|
|
|
const uint8_t *edata_ptr = avctx->extradata; |
|
|
|
|
ATRAC3Context *q = avctx->priv_data; |
|
|
|
|
static VLC_TYPE atrac3_vlc_table[4096][2]; |
|
|
|
|
static int vlcs_initialized = 0; |
|
|
|
|
|
|
|
|
|
/* Take data from the AVCodecContext (RM container). */ |
|
|
|
|
q->sample_rate = avctx->sample_rate; |
|
|
|
@ -1023,10 +1025,15 @@ static av_cold int atrac3_decode_init(AVCodecContext *avctx) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Initialize the VLC tables. */ |
|
|
|
|
if (!vlcs_initialized) { |
|
|
|
|
for (i=0 ; i<7 ; i++) { |
|
|
|
|
spectral_coeff_tab[i].table = &atrac3_vlc_table[atrac3_vlc_offs[i]]; |
|
|
|
|
spectral_coeff_tab[i].table_allocated = atrac3_vlc_offs[i + 1] - atrac3_vlc_offs[i]; |
|
|
|
|
init_vlc (&spectral_coeff_tab[i], 9, huff_tab_sizes[i], |
|
|
|
|
huff_bits[i], 1, 1, |
|
|
|
|
huff_codes[i], 1, 1, INIT_VLC_USE_STATIC); |
|
|
|
|
huff_codes[i], 1, 1, INIT_VLC_USE_NEW_STATIC); |
|
|
|
|
} |
|
|
|
|
vlcs_initialized = 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
init_atrac3_transforms(q); |
|
|
|
|