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;