Add handling of EAGAIN at packet boundaries. See "[PATCH] RTSP-MS 14/15:
authorRonald S. Bultje <rsbultje@gmail.com>
Sun, 26 Jul 2009 19:09:35 +0000 (19:09 +0000)
committerRonald S. Bultje <rsbultje@gmail.com>
Sun, 26 Jul 2009 19:09:35 +0000 (19:09 +0000)
ASF packet parsing" thread for discussion / reasoning.

Originally committed as revision 19509 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/asfdec.c

index df39bb9..0995b5a 100644 (file)
@@ -609,6 +609,14 @@ static int ff_asf_get_packet(AVFormatContext *s, ByteIOContext *pb)
     }
 
     if (c != 0x82) {
     }
 
     if (c != 0x82) {
+        /**
+         * This code allows handling of -EAGAIN at packet boundaries (i.e.
+         * if the packet sync code above triggers -EAGAIN). This does not
+         * imply complete -EAGAIN handling support at random positions in
+         * the stream.
+         */
+        if (url_ferror(pb) == AVERROR(EAGAIN))
+            return AVERROR(EAGAIN);
         if (!url_feof(pb))
             av_log(s, AV_LOG_ERROR, "ff asf bad header %x  at:%"PRId64"\n", c, url_ftell(pb));
     }
         if (!url_feof(pb))
             av_log(s, AV_LOG_ERROR, "ff asf bad header %x  at:%"PRId64"\n", c, url_ftell(pb));
     }