ff_mdct_init(&s->mdct_ctx[i], s->frame_len_bits - i + 1, 1, 1.0 / 32768.0);
if (s->use_noise_coding) {
- init_vlc(&s->hgain_vlc, HGAINVLCBITS, sizeof(ff_wma_hgain_huffbits),
- ff_wma_hgain_huffbits, 1, 1,
- ff_wma_hgain_huffcodes, 2, 2, 0);
+ ff_init_vlc_from_lengths(&s->hgain_vlc, HGAINVLCBITS, FF_ARRAY_ELEMS(ff_wma_hgain_hufftab),
+ &ff_wma_hgain_hufftab[0][1], 2,
+ &ff_wma_hgain_hufftab[0][0], 2, 1, -18, 0, avctx);
}
if (s->use_exp_vlc)
while (q < q_end) {
code = get_vlc2(&s->gb, s->exp_vlc.table, EXPVLCBITS, EXPMAX);
- if (code < 0) {
- av_log(s->avctx, AV_LOG_ERROR, "Exponent vlc invalid\n");
- return -1;
- }
/* NOTE: this offset is the same as MPEG-4 AAC! */
last_exp += code - 60;
if ((unsigned) last_exp + 60 >= FF_ARRAY_ELEMS(pow_tab)) {
}
for (ch = 0; ch < s->avctx->channels; ch++) {
if (s->channel_coded[ch]) {
- int i, n, val, code;
+ int i, n, val;
n = s->exponent_high_sizes[bsize];
val = (int) 0x80000000;
if (val == (int) 0x80000000) {
val = get_bits(&s->gb, 7) - 19;
} else {
- code = get_vlc2(&s->gb, s->hgain_vlc.table,
+ val += get_vlc2(&s->gb, s->hgain_vlc.table,
HGAINVLCBITS, HGAINMAX);
- if (code < 0) {
- av_log(s->avctx, AV_LOG_ERROR,
- "hgain vlc invalid\n");
- return -1;
- }
- val += code - 18;
}
s->high_band_values[ch][i] = val;
}
decode_exp_lsp(s, ch);
}
s->exponents_bsize[ch] = bsize;
+ s->exponents_initialized[ch] = 1;
}
}
}
+ for (ch = 0; ch < s->avctx->channels; ch++) {
+ if (s->channel_coded[ch] && !s->exponents_initialized[ch])
+ return AVERROR_INVALIDDATA;
+ }
+
/* parse spectral coefficients : just RLE encoding */
for (ch = 0; ch < s->avctx->channels; ch++) {
if (s->channel_coded[ch]) {
q = s->last_superframe + s->last_superframe_len;
len = bit_offset;
while (len > 7) {
- *q++ = (get_bits) (&s->gb, 8);
+ *q++ = get_bits(&s->gb, 8);
len -= 8;
}
if (len > 0)
- *q++ = (get_bits) (&s->gb, len) << (8 - len);
+ *q++ = get_bits(&s->gb, len) << (8 - len);
memset(q, 0, AV_INPUT_BUFFER_PADDING_SIZE);
/* XXX: bit_offset bits into last frame */
}
#if CONFIG_WMAV1_DECODER
-AVCodec ff_wmav1_decoder = {
+const AVCodec ff_wmav1_decoder = {
.name = "wmav1",
.long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio 1"),
.type = AVMEDIA_TYPE_AUDIO,
};
#endif
#if CONFIG_WMAV2_DECODER
-AVCodec ff_wmav2_decoder = {
+const AVCodec ff_wmav2_decoder = {
.name = "wmav2",
.long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio 2"),
.type = AVMEDIA_TYPE_AUDIO,