[FFmpeg-cvslog] lavf/utils: remove loop on AVERROR(EAGAIN) in av_read_frame()

Stefano Sabatini git at videolan.org
Mon Sep 24 21:18:01 CEST 2012


ffmpeg | branch: master | Stefano Sabatini <stefasab at gmail.com> | Mon Sep 24 20:38:14 2012 +0200| [bbe9fe469a1c53e3a0029e98b3dc93a45ca450c8] | committer: Stefano Sabatini

lavf/utils: remove loop on AVERROR(EAGAIN) in av_read_frame()

The loop was introduced in 64d340c62ad5954c1a834df2d26057135e771774, and
was likely breaking non blocking reads as it busy loops.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bbe9fe469a1c53e3a0029e98b3dc93a45ca450c8
---

 libavformat/utils.c |   18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/libavformat/utils.c b/libavformat/utils.c
index 4f3529a..2a8fac1 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -1409,18 +1409,12 @@ int av_read_frame(AVFormatContext *s, AVPacket *pkt)
     AVStream *st;
 
     if (!genpts) {
-        while (1) {
-            ret = s->packet_buffer ?
-                read_from_packet_buffer(&s->packet_buffer, &s->packet_buffer_end, pkt) :
-                read_frame_internal(s, pkt);
-            if (ret < 0) {
-                if (ret == AVERROR(EAGAIN))
-                    continue;
-                else
-                    return ret;
-            }
-            goto return_packet;
-        }
+        ret = s->packet_buffer ?
+            read_from_packet_buffer(&s->packet_buffer, &s->packet_buffer_end, pkt) :
+            read_frame_internal(s, pkt);
+        if (ret < 0)
+            return ret;
+        goto return_packet;
     }
 
     for (;;) {



More information about the ffmpeg-cvslog mailing list