X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Faacdec.c;h=685458b9114d03864fb6d962227d1debcb747dff;hb=64425e005edf3bdd77c34c078c3e74ab5ecef557;hp=5ec706bdc7a9eb20566f106022db8357d9ece9f3;hpb=bcab11a1a23d8b156198db352bbdb932740a966c;p=ffmpeg diff --git a/libavformat/aacdec.c b/libavformat/aacdec.c index 5ec706bdc7a..685458b9114 100644 --- a/libavformat/aacdec.c +++ b/libavformat/aacdec.c @@ -154,11 +154,15 @@ static int adts_aac_read_packet(AVFormatContext *s, AVPacket *pkt) { int ret, fsize; - ret = av_get_packet(s->pb, pkt, FFMAX(ID3v2_HEADER_SIZE, ADTS_HEADER_SIZE)); - - if (ret >= ID3v2_HEADER_SIZE && ff_id3v2_match(pkt->data, ID3v2_DEFAULT_MAGIC)) { - if ((ret = handle_id3(s, pkt)) >= 0) - ret = av_get_packet(s->pb, pkt, ADTS_HEADER_SIZE); + // Parse all the ID3 headers between frames + while (1) { + ret = av_get_packet(s->pb, pkt, FFMAX(ID3v2_HEADER_SIZE, ADTS_HEADER_SIZE)); + if (ret >= ID3v2_HEADER_SIZE && ff_id3v2_match(pkt->data, ID3v2_DEFAULT_MAGIC)) { + if ((ret = handle_id3(s, pkt)) >= 0) { + continue; + } + } + break; } if (ret < 0)