Rework link property configuration system.
authorVitor Sessak <vitor1001@gmail.com>
Fri, 15 Feb 2008 22:14:25 +0000 (22:14 +0000)
committerVitor Sessak <vitor1001@gmail.com>
Fri, 15 Feb 2008 22:14:25 +0000 (22:14 +0000)
This can now handle filters which are added to graphs out of order,
including auto-inserted scale filters.  As an added bonus, it can
now detect circular filter chains which wouldn't work anyway.

Commited in SoC by Bobby Bingham on 2007-12-24 03:22:10

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

libavfilter/avfilter.h

index 4a48def..1c61dec 100644 (file)
@@ -381,6 +381,13 @@ struct AVFilterLink
     AVFilterContext *dst;       ///< dest filter
     unsigned int dstpad;        ///< index of the input pad on the dest filter
 
+    /** stage of the initialization of the link properties (dimensions, etc) */
+    enum {
+        AVLINK_UNINIT = 0,      ///< not started
+        AVLINK_STARTINIT,       ///< started, but incomplete
+        AVLINK_INIT             ///< complete
+    } init_state;
+
     int w;                      ///< agreed upon image width
     int h;                      ///< agreed upon image height
     enum PixelFormat format;    ///< agreed upon image colorspace
@@ -418,11 +425,11 @@ int avfilter_link(AVFilterContext *src, unsigned srcpad,
                   AVFilterContext *dst, unsigned dstpad);
 
 /**
- * Negotiate the colorspace, dimensions, etc of a link
- * @param link The link to negotiate the properties of
+ * Negotiate the colorspace, dimensions, etc of all inputs to a filter.
+ * @param filter The filter to negotiate the properties for its inputs
  * @return     Zero on successful negotiation
  */
-int avfilter_config_link(AVFilterLink *link);
+int avfilter_config_links(AVFilterContext *filter);
 
 /**
  * Request a picture buffer with a specific set of permissions