mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-28 05:30:34 +00:00
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:
parent
d71d64dcc1
commit
dc3685e129
@ -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, ×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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user