mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-28 12:32:17 +02: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
|
} else
|
||||||
av_get_packet(pb, pkt, len);
|
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;
|
pkt->stream_index = st->index;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
@ -749,6 +743,16 @@ resync:
|
|||||||
&seq, &flags, ×tamp) < 0)
|
&seq, &flags, ×tamp) < 0)
|
||||||
goto resync;
|
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)
|
if((flags&2) && (seq&0x7F) == 1)
|
||||||
av_add_index_entry(st, pos, timestamp, 0, 0, AVINDEX_KEYFRAME);
|
av_add_index_entry(st, pos, timestamp, 0, 0, AVINDEX_KEYFRAME);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user