aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/wmadec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2009-12-07 00:35:38 +0000
committerMichael Niedermayer <michaelni@gmx.at>2009-12-07 00:35:38 +0000
commit445a9deea684528e0c27c875e19ac153a1b9efec (patch)
tree486c2a5595a762f554512cbe26ff3703d18a1a53 /libavcodec/wmadec.c
parentf78501b26443038b0cc03c7fccf6b02ae4800043 (diff)
downloadffmpeg-445a9deea684528e0c27c875e19ac153a1b9efec.tar.gz
Print error messages on errors.
Originally committed as revision 20757 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/wmadec.c')
-rw-r--r--libavcodec/wmadec.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/libavcodec/wmadec.c b/libavcodec/wmadec.c
index 8ef24b74fe..958e185534 100644
--- a/libavcodec/wmadec.c
+++ b/libavcodec/wmadec.c
@@ -355,8 +355,10 @@ static int decode_exp_vlc(WMACodecContext *s, int ch)
while (q < q_end) {
code = get_vlc2(&s->gb, s->exp_vlc.table, EXPVLCBITS, EXPMAX);
- if (code < 0)
+ if (code < 0){
+ av_log(s->avctx, AV_LOG_ERROR, "Exponent vlc invalid\n");
return -1;
+ }
/* NOTE: this offset is the same as MPEG4 AAC ! */
last_exp += code - 60;
if ((unsigned)last_exp + 60 > FF_ARRAY_ELEMS(pow_tab)) {
@@ -457,12 +459,16 @@ static int wma_decode_block(WMACodecContext *s)
if (s->reset_block_lengths) {
s->reset_block_lengths = 0;
v = get_bits(&s->gb, n);
- if (v >= s->nb_block_sizes)
+ if (v >= s->nb_block_sizes){
+ av_log(s->avctx, AV_LOG_ERROR, "prev_block_len_bits %d out of range\n", s->frame_len_bits - v);
return -1;
+ }
s->prev_block_len_bits = s->frame_len_bits - v;
v = get_bits(&s->gb, n);
- if (v >= s->nb_block_sizes)
+ if (v >= s->nb_block_sizes){
+ av_log(s->avctx, AV_LOG_ERROR, "block_len_bits %d out of range\n", s->frame_len_bits - v);
return -1;
+ }
s->block_len_bits = s->frame_len_bits - v;
} else {
/* update block lengths */
@@ -470,8 +476,10 @@ static int wma_decode_block(WMACodecContext *s)
s->block_len_bits = s->next_block_len_bits;
}
v = get_bits(&s->gb, n);
- if (v >= s->nb_block_sizes)
+ if (v >= s->nb_block_sizes){
+ av_log(s->avctx, AV_LOG_ERROR, "next_block_len_bits %d out of range\n", s->frame_len_bits - v);
return -1;
+ }
s->next_block_len_bits = s->frame_len_bits - v;
} else {
/* fixed block len */
@@ -482,8 +490,10 @@ static int wma_decode_block(WMACodecContext *s)
/* now check if the block length is coherent with the frame length */
s->block_len = 1 << s->block_len_bits;
- if ((s->block_pos + s->block_len) > s->frame_len)
+ if ((s->block_pos + s->block_len) > s->frame_len){
+ av_log(s->avctx, AV_LOG_ERROR, "frame_len overflow\n");
return -1;
+ }
if (s->nb_channels == 2) {
s->ms_stereo = get_bits1(&s->gb);
@@ -547,8 +557,10 @@ static int wma_decode_block(WMACodecContext *s)
val = get_bits(&s->gb, 7) - 19;
} else {
code = get_vlc2(&s->gb, s->hgain_vlc.table, HGAINVLCBITS, HGAINMAX);
- if (code < 0)
+ 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;
@@ -882,6 +894,7 @@ static int wma_decode_superframe(AVCodecContext *avctx,
pos >>= 3;
len = buf_size - pos;
if (len > MAX_CODED_SUPERFRAME_SIZE || len < 0) {
+ av_log(s->avctx, AV_LOG_ERROR, "len %d invalid\n", len);
goto fail;
}
s->last_superframe_len = len;