aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>2008-03-20 09:36:04 +0000
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>2008-03-20 09:36:04 +0000
commitd0ed455f19f5402c7ee2ff3392861fc40f945a85 (patch)
tree0a35c1db252fe54fdd964a9e761baf74fcb0f172
parent10cac9f9c24247c045a2f74ce64690b7e45cdfca (diff)
downloadffmpeg-d0ed455f19f5402c7ee2ff3392861fc40f945a85.tar.gz
correctly set avctx->frame_size for mp3on4 and mp3adu
Originally committed as revision 12508 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/mpegaudiodec.c20
1 files changed, 4 insertions, 16 deletions
diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c
index 98f7f3b5ec..a90eb92f51 100644
--- a/libavcodec/mpegaudiodec.c
+++ b/libavcodec/mpegaudiodec.c
@@ -2301,12 +2301,15 @@ static int mp_decode_frame(MPADecodeContext *s,
dprintf(s->avctx, "frame %d:\n", s->frame_count);
switch(s->layer) {
case 1:
+ avctx->frame_size = 384;
nb_frames = mp_decode_layer1(s);
break;
case 2:
+ avctx->frame_size = 1152;
nb_frames = mp_decode_layer2(s);
break;
case 3:
+ avctx->frame_size = s->lsf ? 576 : 1152;
default:
nb_frames = mp_decode_layer3(s);
@@ -2395,20 +2398,6 @@ retry:
avctx->channels = s->nb_channels;
avctx->bit_rate = s->bit_rate;
avctx->sub_id = s->layer;
- switch(s->layer) {
- case 1:
- avctx->frame_size = 384;
- break;
- case 2:
- avctx->frame_size = 1152;
- break;
- case 3:
- if (s->lsf)
- avctx->frame_size = 576;
- else
- avctx->frame_size = 1152;
- break;
- }
if(s->frame_size<=0 || s->frame_size > buf_size){
av_log(avctx, AV_LOG_ERROR, "incomplete frame\n");
@@ -2472,7 +2461,7 @@ static int decode_frame_adu(AVCodecContext * avctx,
avctx->bit_rate = s->bit_rate;
avctx->sub_id = s->layer;
- avctx->frame_size=s->frame_size = len;
+ s->frame_size = len;
if (avctx->parse_only) {
out_size = buf_size;
@@ -2635,7 +2624,6 @@ static int decode_frame_mp3on4(AVCodecContext * avctx,
/* update codec info */
avctx->sample_rate = s->mp3decctx[0]->sample_rate;
- avctx->frame_size= buf_size;
avctx->bit_rate = 0;
for (i = 0; i < s->frames; i++)
avctx->bit_rate += s->mp3decctx[i]->bit_rate;