aaclatm: Eliminate dummy packets due to muxlength calculation.

Muxlength does not include the 3 bytes of AudioSyncStream() before the
AudioMuxElement(). If these three bytes are not accounted for the last three
bytes of the LATM packet are sent back to the decoder again.

Fixes issue244/mux2.share.ts

Originally committed as revision 25685 to svn://svn.ffmpeg.org/ffmpeg/trunk
oldabi
Alex Converse 15 years ago
parent c77549c510
commit ebb7f7de82
  1. 4
      libavcodec/aacdec.c

@ -2310,9 +2310,9 @@ static int latm_decode_frame(AVCodecContext *avctx, void *out, int *out_size,
if (get_bits(&gb, 11) != LOAS_SYNC_WORD)
return AVERROR_INVALIDDATA;
muxlength = get_bits(&gb, 13);
muxlength = get_bits(&gb, 13) + 3;
// not enough data, the parser should have sorted this
if (muxlength+3 > avpkt->size)
if (muxlength > avpkt->size)
return AVERROR_INVALIDDATA;
if ((err = read_audio_mux_element(latmctx, &gb)) < 0)

Loading…
Cancel
Save