[FFmpeg-cvslog] r17359 - trunk/libavformat/mxfenc.c
bcoudurier
subversion
Mon Feb 16 02:51:52 CET 2009
Author: bcoudurier
Date: Mon Feb 16 02:51:52 2009
New Revision: 17359
Log:
fix mxf interleaving packet purge
Modified:
trunk/libavformat/mxfenc.c
Modified: trunk/libavformat/mxfenc.c
==============================================================================
--- trunk/libavformat/mxfenc.c Mon Feb 16 02:33:02 2009 (r17358)
+++ trunk/libavformat/mxfenc.c Mon Feb 16 02:51:52 2009 (r17359)
@@ -1831,20 +1831,15 @@ static int mxf_interleave_get_packet(AVF
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(AVF
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;
More information about the ffmpeg-cvslog
mailing list