diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c index df2803397c..5f5af5c0c9 100644 --- a/libavcodec/mpegaudiodec.c +++ b/libavcodec/mpegaudiodec.c @@ -2563,7 +2563,6 @@ static int decode_frame_mp3on4(AVCodecContext * avctx, OUT_INT decoded_buf[MPA_FRAME_SIZE * MPA_MAX_CHANNELS]; OUT_INT *outptr, *bp; int fsize; - const unsigned char *start2 = buf, *start; int fr, i, j, n; int off = avctx->channels; const uint8_t *coff = chan_offset[s->chan_cfg]; @@ -2579,16 +2578,13 @@ static int decode_frame_mp3on4(AVCodecContext * avctx, outptr = s->frames == 1 ? out_samples : decoded_buf; for (fr = 0; fr < s->frames; fr++) { - start = start2; - fsize = AV_RB16(start) >> 4; + fsize = AV_RB16(buf) >> 4; fsize = FFMIN3(fsize, len, MPA_MAX_CODED_FRAME_SIZE); - start2 += fsize; - len -= fsize; m = s->mp3decctx[fr]; assert (m != NULL); // Get header - header = AV_RB32(start) | 0xfff00000; + header = AV_RB32(buf) | 0xfff00000; if (ff_mpa_check_header(header) < 0) { // Bad header, discard block *data_size = 0; @@ -2596,7 +2592,9 @@ static int decode_frame_mp3on4(AVCodecContext * avctx, } ff_mpegaudio_decode_header(m, header); - out_size += mp_decode_frame(m, decoded_buf, start, fsize); + out_size += mp_decode_frame(m, decoded_buf, buf, fsize); + buf += fsize; + len -= fsize; if(s->frames > 1) { n = m->avctx->frame_size*m->nb_channels;