[FFmpeg-devel] [PATCH] lavf/utils: add error check in av_read_frame()

Stefano Sabatini stefasab at gmail.com
Mon Sep 24 00:43:36 CEST 2012


In particular, fix crash when the input file contains no packets (e.g. an
ffmeta input).
---
 libavformat/utils.c |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/libavformat/utils.c b/libavformat/utils.c
index 6603483..4f3529a 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -1409,11 +1409,18 @@ int av_read_frame(AVFormatContext *s, AVPacket *pkt)
     AVStream *st;
 
     if (!genpts) {
-        ret = s->packet_buffer ? read_from_packet_buffer(&s->packet_buffer,
-                                                          &s->packet_buffer_end,
-                                                          pkt) :
-                                  read_frame_internal(s, pkt);
-        goto return_packet;
+        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;
+        }
     }
 
     for (;;) {
-- 
1.7.5.4



More information about the ffmpeg-devel mailing list