element: Enforce that elements created by gst_element_factory_create/make() are floating
[platform/upstream/gstreamer.git] / gst / gst_private.h
index b086880..b4567d6 100644 (file)
@@ -38,7 +38,7 @@ extern const char             g_log_domain_gstreamer[];
 #include <stdlib.h>
 #include <string.h>
 
-/* Needed for GST_EXPORT */
+/* Needed for GST_API */
 #include "gst/gstconfig.h"
 
 /* Needed for GstRegistry * */
@@ -92,12 +92,20 @@ struct _GstPluginPrivate {
   GstStructure *cache_data;
 };
 
+/* Needed by GstMeta (to access meta seq) and GstBuffer (create/free/iterate) */
+typedef struct _GstMetaItem GstMetaItem;
+struct _GstMetaItem {
+  GstMetaItem *next;
+  guint64 seq_num;
+  GstMeta meta;
+};
+
 /* FIXME: could rename all priv_gst_* functions to __gst_* now */
 G_GNUC_INTERNAL  gboolean priv_gst_plugin_loading_have_whitelist (void);
 
 G_GNUC_INTERNAL  guint32  priv_gst_plugin_loading_get_whitelist_hash (void);
 
-G_GNUC_INTERNAL  gboolean priv_gst_plugin_desc_is_whitelisted (GstPluginDesc * desc,
+G_GNUC_INTERNAL  gboolean priv_gst_plugin_desc_is_whitelisted (const GstPluginDesc * desc,
                                                                const gchar   * filename);
 
 G_GNUC_INTERNAL  gboolean _priv_plugin_deps_env_vars_changed (GstPlugin * plugin);
@@ -134,6 +142,7 @@ G_GNUC_INTERNAL  void  _priv_gst_date_time_initialize (void);
 G_GNUC_INTERNAL  void  _priv_gst_allocator_cleanup (void);
 G_GNUC_INTERNAL  void  _priv_gst_caps_features_cleanup (void);
 G_GNUC_INTERNAL  void  _priv_gst_caps_cleanup (void);
+G_GNUC_INTERNAL  void  _priv_gst_debug_cleanup (void);
 
 /* called from gst_task_cleanup_all(). */
 G_GNUC_INTERNAL  void  _priv_gst_element_cleanup (void);
@@ -144,12 +153,22 @@ gboolean _priv_gst_registry_remove_cache_plugins (GstRegistry *registry);
 
 G_GNUC_INTERNAL  void _priv_gst_registry_cleanup (void);
 
+GST_API
 gboolean _gst_plugin_loader_client_run (void);
 
 G_GNUC_INTERNAL  GstPlugin * _priv_gst_plugin_load_file_for_registry (const gchar *filename,
                                                                       GstRegistry * registry,
                                                                       GError** error);
 
+/* GValue serialization/deserialization */
+
+G_GNUC_INTERNAL const char * _priv_gst_value_gtype_to_abbr (GType type);
+
+G_GNUC_INTERNAL gboolean _priv_gst_value_parse_string (gchar * s, gchar ** end, gchar ** next, gboolean unescape);
+G_GNUC_INTERNAL gboolean _priv_gst_value_parse_simple_string (gchar * str, gchar ** end);
+G_GNUC_INTERNAL gboolean _priv_gst_value_parse_value (gchar * str, gchar ** after, GValue * value, GType default_type);
+G_GNUC_INTERNAL gchar * _priv_gst_value_serialize_any_list (const GValue * value, const gchar * begin, const gchar * end, gboolean print_type);
+
 /* Used in GstBin for manual state handling */
 G_GNUC_INTERNAL  void _priv_gst_element_state_changed (GstElement *element,
                       GstState oldstate, GstState newstate, GstState pending);
@@ -215,9 +234,14 @@ GstCapsFeatures * __gst_caps_get_features_unchecked (const GstCaps * caps, guint
 
 #ifndef GST_DISABLE_REGISTRY
 /* Secret variable to initialise gst without registry cache */
-GST_EXPORT gboolean _gst_disable_registry_cache;
+
+GST_API gboolean _gst_disable_registry_cache;
 #endif
 
+/* Secret variable to let the plugin scanner use the same base path
+ * as the main application in order to determine dependencies */
+GST_API gchar *_gst_executable_path;
+
 /* provide inline gst_g_value_get_foo_unchecked(), used in gststructure.c */
 #define DEFINE_INLINE_G_VALUE_GET_UNCHECKED(ret_type,name_type,v_field) \
 static inline ret_type                                                  \
@@ -240,37 +264,37 @@ DEFINE_INLINE_G_VALUE_GET_UNCHECKED(const gchar *,string,v_pointer)
 
 #ifndef GST_REMOVE_GST_DEBUG
 
-GST_EXPORT GstDebugCategory *GST_CAT_GST_INIT;
-GST_EXPORT GstDebugCategory *GST_CAT_MEMORY;
-GST_EXPORT GstDebugCategory *GST_CAT_PARENTAGE;
-GST_EXPORT GstDebugCategory *GST_CAT_STATES;
-GST_EXPORT GstDebugCategory *GST_CAT_SCHEDULING;
-GST_EXPORT GstDebugCategory *GST_CAT_BUFFER;
-GST_EXPORT GstDebugCategory *GST_CAT_BUFFER_LIST;
-GST_EXPORT GstDebugCategory *GST_CAT_BUS;
-GST_EXPORT GstDebugCategory *GST_CAT_CAPS;
-GST_EXPORT GstDebugCategory *GST_CAT_CLOCK;
-GST_EXPORT GstDebugCategory *GST_CAT_ELEMENT_PADS;
-GST_EXPORT GstDebugCategory *GST_CAT_PADS;
-GST_EXPORT GstDebugCategory *GST_CAT_PERFORMANCE;
-GST_EXPORT GstDebugCategory *GST_CAT_PIPELINE;
-GST_EXPORT GstDebugCategory *GST_CAT_PLUGIN_LOADING;
-GST_EXPORT GstDebugCategory *GST_CAT_PLUGIN_INFO;
-GST_EXPORT GstDebugCategory *GST_CAT_PROPERTIES;
-GST_EXPORT GstDebugCategory *GST_CAT_NEGOTIATION;
-GST_EXPORT GstDebugCategory *GST_CAT_REFCOUNTING;
-GST_EXPORT GstDebugCategory *GST_CAT_ERROR_SYSTEM;
-GST_EXPORT GstDebugCategory *GST_CAT_EVENT;
-GST_EXPORT GstDebugCategory *GST_CAT_MESSAGE;
-GST_EXPORT GstDebugCategory *GST_CAT_PARAMS;
-GST_EXPORT GstDebugCategory *GST_CAT_CALL_TRACE;
-GST_EXPORT GstDebugCategory *GST_CAT_SIGNAL;
-GST_EXPORT GstDebugCategory *GST_CAT_PROBE;
-GST_EXPORT GstDebugCategory *GST_CAT_REGISTRY;
-GST_EXPORT GstDebugCategory *GST_CAT_QOS;
-GST_EXPORT GstDebugCategory *GST_CAT_META;
-GST_EXPORT GstDebugCategory *GST_CAT_LOCKING;
-GST_EXPORT GstDebugCategory *GST_CAT_CONTEXT;
+GST_API GstDebugCategory *GST_CAT_GST_INIT;
+GST_API GstDebugCategory *GST_CAT_MEMORY;
+GST_API GstDebugCategory *GST_CAT_PARENTAGE;
+GST_API GstDebugCategory *GST_CAT_STATES;
+GST_API GstDebugCategory *GST_CAT_SCHEDULING;
+GST_API GstDebugCategory *GST_CAT_BUFFER;
+GST_API GstDebugCategory *GST_CAT_BUFFER_LIST;
+GST_API GstDebugCategory *GST_CAT_BUS;
+GST_API GstDebugCategory *GST_CAT_CAPS;
+GST_API GstDebugCategory *GST_CAT_CLOCK;
+GST_API GstDebugCategory *GST_CAT_ELEMENT_PADS;
+GST_API GstDebugCategory *GST_CAT_PADS;
+GST_API GstDebugCategory *GST_CAT_PERFORMANCE;
+GST_API GstDebugCategory *GST_CAT_PIPELINE;
+GST_API GstDebugCategory *GST_CAT_PLUGIN_LOADING;
+GST_API GstDebugCategory *GST_CAT_PLUGIN_INFO;
+GST_API GstDebugCategory *GST_CAT_PROPERTIES;
+GST_API GstDebugCategory *GST_CAT_NEGOTIATION;
+GST_API GstDebugCategory *GST_CAT_REFCOUNTING;
+GST_API GstDebugCategory *GST_CAT_ERROR_SYSTEM;
+GST_API GstDebugCategory *GST_CAT_EVENT;
+GST_API GstDebugCategory *GST_CAT_MESSAGE;
+GST_API GstDebugCategory *GST_CAT_PARAMS;
+GST_API GstDebugCategory *GST_CAT_CALL_TRACE;
+GST_API GstDebugCategory *GST_CAT_SIGNAL;
+GST_API GstDebugCategory *GST_CAT_PROBE;
+GST_API GstDebugCategory *GST_CAT_REGISTRY;
+GST_API GstDebugCategory *GST_CAT_QOS;
+GST_API GstDebugCategory *GST_CAT_META;
+GST_API GstDebugCategory *GST_CAT_LOCKING;
+GST_API GstDebugCategory *GST_CAT_CONTEXT;
 
 /* Categories that should be completely private to
  * libgstreamer should be done like this: */
@@ -344,8 +368,6 @@ struct _GstPlugin {
   /*< private >*/
   GstPluginDesc        desc;
 
-  GstPluginDesc *orig_desc;
-
   gchar *      filename;
   gchar *      basename;       /* base name (non-dir part) of plugin path */