[FFmpeg-cvslog] r20387 - trunk/libavfilter/avfilter.c

stefano subversion
Tue Oct 27 20:52:15 CET 2009


Author: stefano
Date: Tue Oct 27 20:52:14 2009
New Revision: 20387

Log:
Introduce first_avfilter and use that, together with AVFilter.next,
for registering and finding filters, rather than use the struct
AVFilterList, which is removed.

Simplify the filter registration management code.

Modified:
   trunk/libavfilter/avfilter.c

Modified: trunk/libavfilter/avfilter.c
==============================================================================
--- trunk/libavfilter/avfilter.c	Tue Oct 27 20:46:22 2009	(r20386)
+++ trunk/libavfilter/avfilter.c	Tue Oct 27 20:52:14 2009	(r20387)
@@ -28,13 +28,6 @@ unsigned avfilter_version(void) {
     return LIBAVFILTER_VERSION_INT;
 }
 
-/** list of registered filters */
-static struct FilterList
-{
-    AVFilter *filter;
-    struct FilterList *next;
-} *filters = NULL;
-
 /** helper macros to get the in/out pad on the dst/src filter */
 #define link_dpad(link)     link->dst-> input_pads[link->dstpad]
 #define link_spad(link)     link->src->output_pads[link->srcpad]
@@ -327,34 +320,33 @@ void avfilter_draw_slice(AVFilterLink *l
     draw_slice(link, y, h);
 }
 
+AVFilter *first_avfilter = NULL;
+
 AVFilter *avfilter_get_by_name(const char *name)
 {
-    struct FilterList *filt;
+    AVFilter *filter;
 
-    for(filt = filters; filt; filt = filt->next)
-        if(!strcmp(filt->filter->name, name))
-            return filt->filter;
+    for (filter = first_avfilter; filter; filter = filter->next)
+        if (!strcmp(filter->name, name))
+            return filter;
 
     return NULL;
 }
 
 void avfilter_register(AVFilter *filter)
 {
-    struct FilterList *newfilt = av_malloc(sizeof(struct FilterList));
+    AVFilter **p;
+    p = &first_avfilter;
+    while (*p)
+        p = &(*p)->next;
 
-    newfilt->filter = filter;
-    newfilt->next   = filters;
-    filters         = newfilt;
+    *p = filter;
+    filter->next = NULL;
 }
 
 void avfilter_uninit(void)
 {
-    struct FilterList *tmp;
-
-    for(; filters; filters = tmp) {
-        tmp = filters->next;
-        av_free(filters);
-    }
+    first_avfilter = NULL;
 }
 
 static int pad_count(const AVFilterPad *pads)



More information about the ffmpeg-cvslog mailing list