[FFmpeg-devel] [PATCH 2/5] lavf/flvdec: use FFERROR_REDO instead of AVERROR(EAGAIN).

Nicolas George george at nsup.org
Fri Nov 27 19:16:07 CET 2015


Fix trac ticket #5041.

Signed-off-by: Nicolas George <george at nsup.org>
---
 libavformat/flvdec.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)


Problem can be observed by transcoding or remuxing a large FLV with both
audio and video with and without -an or -vn and observing the speed and CPU
usage.


diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index ca73969..c003e70 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -882,7 +882,7 @@ retry:
         }
 
         if (size == 0) {
-            ret = AVERROR(EAGAIN);
+            ret = FFERROR_REDO;
             goto leave;
         }
 
@@ -927,13 +927,13 @@ retry:
                    type, size, flags);
 skip:
             avio_seek(s->pb, next, SEEK_SET);
-            ret = AVERROR(EAGAIN);
+            ret = FFERROR_REDO;
             goto leave;
         }
 
         /* skip empty data packets */
         if (!size) {
-            ret = AVERROR(EAGAIN);
+            ret = FFERROR_REDO;
             goto leave;
         }
 
@@ -973,7 +973,7 @@ skip:
             || st->discard >= AVDISCARD_ALL
         ) {
             avio_seek(s->pb, next, SEEK_SET);
-            ret = AVERROR(EAGAIN);
+            ret = FFERROR_REDO;
             goto leave;
         }
 
@@ -1068,7 +1068,7 @@ retry_duration:
             if (st->codec->extradata) {
                 if ((ret = flv_queue_extradata(flv, s->pb, stream_type, size)) < 0)
                     return ret;
-                ret = AVERROR(EAGAIN);
+                ret = FFERROR_REDO;
                 goto leave;
             }
             if ((ret = flv_get_extradata(s, st, size)) < 0)
@@ -1095,14 +1095,14 @@ retry_duration:
                 }
             }
 
-            ret = AVERROR(EAGAIN);
+            ret = FFERROR_REDO;
             goto leave;
         }
     }
 
     /* skip empty data packets */
     if (!size) {
-        ret = AVERROR(EAGAIN);
+        ret = FFERROR_REDO;
         goto leave;
     }
 
-- 
2.6.2



More information about the ffmpeg-devel mailing list