]> git.sesse.net Git - x264/commitdiff
Fix lavf input with delayed frames
authorgolgol7777 <golgol7777@gmail.com>
Sun, 8 Aug 2010 06:01:46 +0000 (23:01 -0700)
committerFiona Glaser <fiona@x264.com>
Mon, 16 Aug 2010 09:53:52 +0000 (02:53 -0700)
input/lavf.c

index 52e890c5f817fb509b2e144e973d2766336617d6..cadfd350d68f4e26a404e4815b9f8155de770409 100644 (file)
@@ -64,20 +64,25 @@ static int read_frame_internal( cli_pic_t *p_pic, lavf_hnd_t *h, int i_frame, vi
     while( i_frame >= h->next_frame )
     {
         int finished = 0;
-        while( !finished && av_read_frame( h->lavf, pkt ) >= 0 )
+        int ret = 0;
+        do
+        {
+            ret = av_read_frame( h->lavf, pkt );
+
             if( pkt->stream_index == h->stream_id )
             {
+                if( ret < 0 )
+                    pkt->size = 0;
+
                 c->reordered_opaque = pkt->pts;
                 if( avcodec_decode_video2( c, &frame, &finished, pkt ) < 0 )
                     x264_cli_log( "lavf", X264_LOG_WARNING, "video decoding failed on frame %d\n", h->next_frame );
             }
+        } while( !finished && ret >= 0 );
+
         if( !finished )
-        {
-            if( avcodec_decode_video2( c, &frame, &finished, pkt ) < 0 )
-                x264_cli_log( "lavf", X264_LOG_WARNING, "video decoding failed on frame %d\n", h->next_frame );
-            if( !finished )
-                return -1;
-        }
+            return -1;
+
         h->next_frame++;
     }