# HG changeset patch # User rbultje # Date 1236602573 0 # Node ID 83eb34995cfde4ea4e8b17dce978f47985a12b76 # Parent 98242eba0332de7521ae06b778b9a42b33140726 Move frame discarding out of the ff_rm_parse_packet() loop, and respect rm->audio_pkt_cnt in case multiple packets should be read before the next syncpoint in the file, so that ffplay -an on a file containing AAC audio works. See "[PATCH] Make RM demuxer behave better with -an option" thread on mailinglist. diff -r 98242eba0332 -r 83eb34995cfd rmdec.c --- a/rmdec.c Mon Mar 09 12:25:13 2009 +0000 +++ b/rmdec.c Mon Mar 09 12:42:53 2009 +0000 @@ -643,12 +643,6 @@ } else av_get_packet(pb, pkt, len); - if( (st->discard >= AVDISCARD_NONKEY && !(*flags&2)) - || st->discard >= AVDISCARD_ALL){ - av_free_packet(pkt); - return -1; - } - pkt->stream_index = st->index; #if 0 @@ -749,6 +743,16 @@ &seq, &flags, ×tamp) < 0) goto resync; + if( (st->discard >= AVDISCARD_NONKEY && !(flags&2)) + || st->discard >= AVDISCARD_ALL){ + av_free_packet(pkt); + while (rm->audio_pkt_cnt > 0) { + ff_rm_retrieve_cache(s, s->pb, st, st->priv_data, pkt); + av_free_packet(pkt); + } + goto resync; + } + if((flags&2) && (seq&0x7F) == 1) av_add_index_entry(st, pos, timestamp, 0, 0, AVINDEX_KEYFRAME); }