OSDN Git Service

Fix recursive avfilter_poll_frame(). It was doing
authorVitor Sessak <vitor1001@gmail.com>
Sun, 18 Oct 2009 22:33:37 +0000 (22:33 +0000)
committerVitor Sessak <vitor1001@gmail.com>
Sun, 18 Oct 2009 22:33:37 +0000 (22:33 +0000)
min = FFMIN(min, avfilter_poll_frame(link->src->inputs[i]))
which, since FFMIN is a macro, was calling itself
twice for every input, causing an exponential cost in time.

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

libavfilter/avfilter.c

index 77c7571..c68afad 100644 (file)
@@ -224,9 +224,11 @@ int avfilter_poll_frame(AVFilterLink *link)
         return link_spad(link).poll_frame(link);
 
     for (i=0; i<link->src->input_count; i++) {
+        int val;
         if(!link->src->inputs[i])
             return -1;
-        min = FFMIN(min, avfilter_poll_frame(link->src->inputs[i]));
+        val = avfilter_poll_frame(link->src->inputs[i]);
+        min = FFMIN(min, val);
     }
 
     return min;