[FFmpeg-cvslog] r13319 - trunk/libavfilter/graphparser.c

vitor subversion
Sat May 24 22:40:30 CEST 2008


Author: vitor
Date: Sat May 24 22:40:30 2008
New Revision: 13319

Log:
Move code from handle_link() to the only place the function is called
Commited in SoC by Vitor Sessak on 2008-04-18 18:18:35


Modified:
   trunk/libavfilter/graphparser.c

Modified: trunk/libavfilter/graphparser.c
==============================================================================
--- trunk/libavfilter/graphparser.c	(original)
+++ trunk/libavfilter/graphparser.c	Sat May 24 22:40:30 2008
@@ -199,50 +199,6 @@ static void free_inout(AVFilterInOut *he
 }
 
 /**
- * Process a link. This funcion looks for a matching label in the *inout
- * linked list. If none is found, it adds this link to the list.
- */
-static int handle_link(char *name, AVFilterInOut **inout, int pad,
-                       enum LinkType type, AVFilterContext *filter,
-                       AVClass *log_ctx)
-{
-    AVFilterInOut *p = *inout;
-
-    for (; p && strcmp(p->name, name); p = p->next);
-
-    if(!p) {
-        // First label apearence, add it to the linked list
-        AVFilterInOut *inoutn = av_malloc(sizeof(AVFilterInOut));
-
-        inoutn->name    = name;
-        inoutn->type    = type;
-        inoutn->filter  = filter;
-        inoutn->pad_idx = pad;
-        inoutn->next    = *inout;
-        *inout = inoutn;
-         return 0;
-    }
-
-    if(p->type == LinkTypeIn && type == LinkTypeOut) {
-        if(link_filter(filter, pad, p->filter, p->pad_idx, log_ctx) < 0)
-            return -1;
-    } else if(p->type == LinkTypeOut && type == LinkTypeIn) {
-        if(link_filter(p->filter, p->pad_idx, filter, pad, log_ctx) < 0)
-            return -1;
-    } else {
-        av_log(log_ctx, AV_LOG_ERROR,
-               "Two links named '%s' are either both input or both output\n",
-               name);
-        return -1;
-    }
-
-    p->filter = NULL;
-
-    return 0;
-}
-
-
-/**
  * Parse "[a1][link2] ... [etc]"
  */
 static int parse_inouts(const char **buf, AVFilterInOut **inout, int pad,
@@ -251,17 +207,47 @@ static int parse_inouts(const char **buf
 {
     while (**buf == '[') {
         char *name;
+        AVFilterInOut *p = *inout;
 
         parse_link_name(buf, &name, log_ctx);
 
         if(!name)
             return -1;
 
-        if(handle_link(name, inout, pad++, type, filter, log_ctx) < 0)
-            return -1;
+        for (; p && strcmp(p->name, name); p = p->next);
+
+        if(!p) {
+            // First label apearence, add it to the linked list
+            AVFilterInOut *inoutn = av_malloc(sizeof(AVFilterInOut));
 
+            inoutn->name    = name;
+            inoutn->type    = type;
+            inoutn->filter  = filter;
+            inoutn->pad_idx = pad;
+            inoutn->next    = *inout;
+            *inout = inoutn;
+        } else {
+
+            if(p->type == LinkTypeIn && type == LinkTypeOut) {
+                if(link_filter(filter, pad, p->filter, p->pad_idx, log_ctx) < 0)
+                    return -1;
+            } else if(p->type == LinkTypeOut && type == LinkTypeIn) {
+                if(link_filter(p->filter, p->pad_idx, filter, pad, log_ctx) < 0)
+                    return -1;
+            } else {
+                av_log(log_ctx, AV_LOG_ERROR,
+                       "Two links named '%s' are either both input or both output\n",
+                       name);
+                return -1;
+            }
+
+            p->filter = NULL;
+        }
+
+        pad++;
         consume_whitespace(buf);
     }
+
     return pad;
 }
 




More information about the ffmpeg-cvslog mailing list