[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