gstreamer_core/gst/gstplugin.h
changeset 8 4a7fac7dd34a
parent 0 0e761a78d257
child 10 6f340f756486
--- a/gstreamer_core/gst/gstplugin.h	Fri Mar 19 09:35:09 2010 +0200
+++ b/gstreamer_core/gst/gstplugin.h	Fri Apr 16 15:15:52 2010 +0300
@@ -32,11 +32,13 @@
 #include <gmodule.h>
 #include <gst/gstobject.h>
 #include <gst/gstmacros.h>
+#include <gst/gststructure.h>
 
 G_BEGIN_DECLS
 
 typedef struct _GstPlugin GstPlugin;
 typedef struct _GstPluginClass GstPluginClass;
+typedef struct _GstPluginPrivate GstPluginPrivate;
 typedef struct _GstPluginDesc GstPluginDesc;
 
 /**
@@ -80,6 +82,27 @@
 } GstPluginFlags;
 
 /**
+ * GstPluginDependencyFlags:
+ * @GST_PLUGIN_DEPENDENCY_FLAG_NONE : no special flags
+ * @GST_PLUGIN_DEPENDENCY_FLAG_RECURSE : recurse into subdirectories
+ * @GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY : use paths
+ *         argument only if none of the environment variables is set
+ * @GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX : interpret
+ *         filename argument as filter suffix and check all matching files in
+ *         the directory
+ *
+ * Flags used in connection with gst_plugin_add_dependency().
+ *
+ * Since: 0.10.22
+ */
+typedef enum {
+  GST_PLUGIN_DEPENDENCY_FLAG_NONE = 0,
+  GST_PLUGIN_DEPENDENCY_FLAG_RECURSE = (1 << 0),
+  GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY = (1 << 1),
+  GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX = (1 << 2)
+} GstPluginDependencyFlags;
+
+/**
  * GstPluginInitFunc:
  * @plugin: The plugin object that can be used to register #GstPluginFeatures for this plugin.
  *
@@ -92,6 +115,23 @@
 typedef gboolean (*GstPluginInitFunc) (GstPlugin *plugin);
 
 /**
+ * GstPluginInitFullFunc:
+ * @plugin: The plugin object that can be used to register #GstPluginFeatures for this plugin.
+ * @user_data: The user data.
+ *
+ * A plugin should provide a pointer to a function of either #GstPluginInitFunc
+ * or this type in the plugin_desc struct.
+ * The function will be called by the loader at startup. This version allows
+ * user data to be passed to init function (useful for bindings).
+ *
+ * Returns: %TRUE if plugin initialised successfully
+ *
+ * Since: 0.10.24
+ *
+ */
+typedef gboolean (*GstPluginInitFullFunc) (GstPlugin *plugin, gpointer user_data);
+
+/**
  * GstPluginDesc:
  * @major_version: the major version number of core that plugin was compiled for
  * @minor_version: the minor version number of core that plugin was compiled for
@@ -160,7 +200,8 @@
   gboolean      registered;     /* TRUE when the registry has seen a filename
                                  * that matches the plugin's basename */
 
-  gpointer _gst_reserved[GST_PADDING];
+  GstPluginPrivate *priv;
+  gpointer _gst_reserved[GST_PADDING - 1];
 };
 
 struct _GstPluginClass {
@@ -184,7 +225,9 @@
  *
  * This macro needs to be used to define the entry point and meta data of a
  * plugin. One would use this macro to export a plugin, so that it can be used
- * by other applications
+ * by other applications.
+ *
+ * The macro uses a define named PACKAGE for the #GstPluginDesc,source field.
  */
 #define GST_PLUGIN_DEFINE(major,minor,name,description,init,version,license,package,origin)	\
 GST_PLUGIN_EXPORT GstPluginDesc gst_plugin_desc = {	\
@@ -217,9 +260,12 @@
  * local plugin. One would use this macro to define a local plugin that can only
  * be used by the own application.
  *
+ * The macro uses a define named PACKAGE for the #GstPluginDesc.source field.
+ *
  * Deprecated: Use gst_plugin_register_static() instead. This macro was
  * deprecated because it uses constructors, which is a compiler feature not
  * available on all compilers.
+ *
  */
 /* We don't have deprecation guards here on purpose, it's enough to have
  * deprecation guards around _gst_plugin_register_static(), and will result in
@@ -292,6 +338,22 @@
 #endif
 
 
+gboolean		gst_plugin_register_static_full	(gint major_version,
+                                                         gint minor_version,
+                                                         const gchar *name,
+                                                         gchar *description,
+                                                         GstPluginInitFullFunc init_full_func,
+                                                         const gchar *version,
+                                                         const gchar *license,
+                                                         const gchar *source,
+                                                         const gchar *package,
+                                                         const gchar *origin,
+                                                         gpointer user_data);
+#ifdef __SYMBIAN32__
+IMPORT_C
+#endif
+
+
 G_CONST_RETURN gchar*	gst_plugin_get_name		(GstPlugin *plugin);
 #ifdef __SYMBIAN32__
 IMPORT_C
@@ -332,6 +394,17 @@
 IMPORT_C
 #endif
 
+G_CONST_RETURN GstStructure*	gst_plugin_get_cache_data	(GstPlugin * plugin);
+#ifdef __SYMBIAN32__
+IMPORT_C
+#endif
+
+void		gst_plugin_set_cache_data	(GstPlugin * plugin, GstStructure *cache_data);
+#ifdef __SYMBIAN32__
+IMPORT_C
+#endif
+
+
 GModule *		gst_plugin_get_module		(GstPlugin *plugin);
 #ifdef __SYMBIAN32__
 IMPORT_C
@@ -366,6 +439,26 @@
 #endif
 
 
+void                    gst_plugin_add_dependency (GstPlugin    * plugin,
+                                                   const gchar ** env_vars,
+                                                   const gchar ** paths,
+                                                   const gchar ** names,
+                                                   GstPluginDependencyFlags flags);
+#ifdef __SYMBIAN32__
+IMPORT_C
+#endif
+
+
+void                    gst_plugin_add_dependency_simple (GstPlugin   * plugin,
+                                                          const gchar * env_vars,
+                                                          const gchar * paths,
+                                                          const gchar * names,
+                                                          GstPluginDependencyFlags flags);
+#ifdef __SYMBIAN32__
+IMPORT_C
+#endif
+
+
 void gst_plugin_list_free (GList *list);
 
 G_END_DECLS