diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c index eade4fb6ae..6d287adaf1 100644 --- a/libavcodec/ac3dec.c +++ b/libavcodec/ac3dec.c @@ -80,7 +80,7 @@ static int ac3_decode_frame(AVCodecContext *avctx, int sample_rate, bit_rate; short *out_samples = data; float level; - static int ac3_channels[8] = { + static const int ac3_channels[8] = { 2, 1, 2, 3, 3, 4, 4, 5 }; @@ -104,27 +104,27 @@ static int ac3_decode_frame(AVCodecContext *avctx, memcpy(s->inbuf, s->inbuf + 1, HEADER_SIZE - 1); s->inbuf_ptr--; } else { - s->frame_size = len; + s->frame_size = len; /* update codec info */ avctx->sample_rate = sample_rate; s->channels = ac3_channels[s->flags & 7]; if (s->flags & AC3_LFE) - s->channels++; - if (avctx->channels == 0) - /* No specific number of channel requested */ - avctx->channels = s->channels; - else if (s->channels < avctx->channels) { - fprintf(stderr, "libav: AC3 Source channels are less than specified: output to %d channels..\n", s->channels); - avctx->channels = s->channels; - } - avctx->bit_rate = bit_rate; + s->channels++; + if (avctx->channels == 0) + /* No specific number of channel requested */ + avctx->channels = s->channels; + else if (s->channels < avctx->channels) { + fprintf(stderr, "ac3dec: AC3 Source channels are less than specified: output to %d channels.. (frmsize: %d)\n", s->channels, len); + avctx->channels = s->channels; + } + avctx->bit_rate = bit_rate; } } } else if (len < s->frame_size) { len = s->frame_size - len; if (len > buf_size) len = buf_size; - + memcpy(s->inbuf_ptr, buf_ptr, len); buf_ptr += len; s->inbuf_ptr += len;