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.

Originally committed as revision 17908 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Ronald S. Bultje 2009-03-09 12:42:53 +00:00
parent d71d64dcc1
commit dc3685e129
1 changed files with 10 additions and 6 deletions

View File

@ -643,12 +643,6 @@ ff_rm_parse_packet (AVFormatContext *s, ByteIOContext *pb,
} 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 @@ resync:
&seq, &flags, &timestamp) < 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);
}