mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-14 11:14:44 +00:00
fix mxf interleaving packet purge
Originally committed as revision 17359 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
6545996fb9
commit
fe5a361c3a
@ -1831,20 +1831,15 @@ static int mxf_interleave_get_packet(AVFormatContext *s, AVPacket *out, AVPacket
|
||||
if (stream_count && (s->nb_streams == stream_count || flush)) {
|
||||
pktl = s->packet_buffer;
|
||||
if (s->nb_streams != stream_count) {
|
||||
AVPacketList *first = NULL;
|
||||
AVPacketList *last = NULL;
|
||||
// find first packet in edit unit
|
||||
// find last packet in edit unit
|
||||
while (pktl) {
|
||||
AVStream *st = s->streams[pktl->pkt.stream_index];
|
||||
if (st->index == 0)
|
||||
if (!stream_count || pktl->pkt.stream_index == 0)
|
||||
break;
|
||||
else if (!first)
|
||||
first = pktl;
|
||||
last = pktl;
|
||||
pktl = pktl->next;
|
||||
stream_count--;
|
||||
}
|
||||
if (last)
|
||||
last->next = NULL;
|
||||
// purge packet queue
|
||||
while (pktl) {
|
||||
AVPacketList *next = pktl->next;
|
||||
@ -1852,9 +1847,13 @@ static int mxf_interleave_get_packet(AVFormatContext *s, AVPacket *out, AVPacket
|
||||
av_freep(&pktl);
|
||||
pktl = next;
|
||||
}
|
||||
if (!first)
|
||||
if (last)
|
||||
last->next = NULL;
|
||||
else {
|
||||
s->packet_buffer = NULL;
|
||||
goto out;
|
||||
pktl = first;
|
||||
}
|
||||
pktl = s->packet_buffer;
|
||||
}
|
||||
|
||||
*out = pktl->pkt;
|
||||
|
Loading…
Reference in New Issue
Block a user