gstfunnel: avoid access of freed pad
[platform/upstream/gstreamer.git] / gst / gst_private.h
index 19f02d3..c15c8fa 100644 (file)
@@ -113,7 +113,6 @@ void  _priv_gst_sample_initialize (void);
 void  _priv_gst_tag_initialize (void);
 void  _priv_gst_value_initialize (void);
 void  _priv_gst_debug_init (void);
-void  _priv_gst_toc_initialize (void);
 
 /* TOC functions */
 /* These functions are used to parse TOC messages, events and queries */
@@ -257,5 +256,114 @@ extern GstDebugCategory *_priv_GST_CAT_POLL;
 #endif
 
 
+/**** objects made opaque until the private bits have been made private ****/
+
+#include <gmodule.h>
+#include <time.h> /* time_t */
+#include <sys/types.h> /* off_t */
+#include <sys/stat.h> /* off_t */
+
+typedef struct _GstPluginPrivate GstPluginPrivate;
+
+struct _GstPlugin {
+  GstObject       object;
+
+  /*< private >*/
+  GstPluginDesc        desc;
+
+  GstPluginDesc *orig_desc;
+
+  gchar *      filename;
+  gchar *      basename;       /* base name (non-dir part) of plugin path */
+
+  GModule *    module;         /* contains the module if plugin is loaded */
+
+  off_t         file_size;
+  time_t        file_mtime;
+  gboolean      registered;     /* TRUE when the registry has seen a filename
+                                 * that matches the plugin's basename */
+
+  GstPluginPrivate *priv;
+
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+struct _GstPluginClass {
+  GstObjectClass  object_class;
+
+  /*< private >*/
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+struct _GstPluginFeature {
+  GstObject      object;
+
+  /*< private >*/
+  gboolean       loaded;
+  guint          rank;
+
+  const gchar   *plugin_name;
+  GstPlugin     *plugin;      /* weak ref */
+
+  /*< private >*/
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+struct _GstPluginFeatureClass {
+  GstObjectClass        parent_class;
+
+  /*< private >*/
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+#include "gsttypefind.h"
+
+struct _GstTypeFindFactory {
+  GstPluginFeature              feature;
+  /* <private> */
+
+  GstTypeFindFunction           function;
+  gchar **                      extensions;
+  GstCaps *                     caps; /* FIXME: not yet saved in registry */
+
+  gpointer                      user_data;
+  GDestroyNotify                user_data_notify;
+
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+struct _GstTypeFindFactoryClass {
+  GstPluginFeatureClass         parent;
+  /* <private> */
+
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+struct _GstElementFactory {
+  GstPluginFeature      parent;
+
+  GType                 type;                   /* unique GType of element or 0 if not loaded */
+
+  gpointer              metadata;
+
+  GList *               staticpadtemplates;     /* GstStaticPadTemplate list */
+  guint                 numpadtemplates;
+
+  /* URI interface stuff */
+  GstURIType            uri_type;
+  gchar **              uri_protocols;
+
+  GList *               interfaces;             /* interface type names this element implements */
+
+  /*< private >*/
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+struct _GstElementFactoryClass {
+  GstPluginFeatureClass parent_class;
+
+  gpointer _gst_reserved[GST_PADDING];
+};
+
 G_END_DECLS
 #endif /* __GST_PRIVATE_H__ */