X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Fgst_private.h;h=b4567d68302816a69a3f4a54bc2cc939832cf56f;hb=ce43de86902c4e9c8ed4e9682602664cb9bce2ee;hp=6b9f3c9d87cb79485cfe3189eae1f62035581aa7;hpb=68a2eb5d180d2cdf39831229cad10de980f0e526;p=platform%2Fupstream%2Fgstreamer.git diff --git a/gst/gst_private.h b/gst/gst_private.h index 6b9f3c9..b4567d6 100644 --- a/gst/gst_private.h +++ b/gst/gst_private.h @@ -16,8 +16,8 @@ * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_PRIVATE_H__ @@ -38,6 +38,9 @@ extern const char g_log_domain_gstreamer[]; #include #include +/* Needed for GST_API */ +#include "gst/gstconfig.h" + /* Needed for GstRegistry * */ #include "gstregistry.h" #include "gststructure.h" @@ -54,11 +57,16 @@ extern const char g_log_domain_gstreamer[]; /* for GstElement */ #include "gstelement.h" +/* for GstDeviceProvider */ +#include "gstdeviceprovider.h" + /* for GstToc */ #include "gsttoc.h" #include "gstdatetime.h" +#include "gsttracerutils.h" + G_BEGIN_DECLS /* used by gstparse.c and grammar.y */ @@ -84,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); @@ -101,14 +117,16 @@ G_GNUC_INTERNAL gboolean _priv_gst_in_valgrind (void); /* init functions called from gst_init(). */ G_GNUC_INTERNAL void _priv_gst_quarks_initialize (void); G_GNUC_INTERNAL void _priv_gst_mini_object_initialize (void); +G_GNUC_INTERNAL void _priv_gst_memory_initialize (void); +G_GNUC_INTERNAL void _priv_gst_allocator_initialize (void); G_GNUC_INTERNAL void _priv_gst_buffer_initialize (void); G_GNUC_INTERNAL void _priv_gst_buffer_list_initialize (void); G_GNUC_INTERNAL void _priv_gst_structure_initialize (void); G_GNUC_INTERNAL void _priv_gst_caps_initialize (void); +G_GNUC_INTERNAL void _priv_gst_caps_features_initialize (void); G_GNUC_INTERNAL void _priv_gst_event_initialize (void); G_GNUC_INTERNAL void _priv_gst_format_initialize (void); G_GNUC_INTERNAL void _priv_gst_message_initialize (void); -G_GNUC_INTERNAL void _priv_gst_memory_initialize (void); G_GNUC_INTERNAL void _priv_gst_meta_initialize (void); G_GNUC_INTERNAL void _priv_gst_plugin_initialize (void); G_GNUC_INTERNAL void _priv_gst_query_initialize (void); @@ -116,6 +134,18 @@ G_GNUC_INTERNAL void _priv_gst_sample_initialize (void); G_GNUC_INTERNAL void _priv_gst_tag_initialize (void); G_GNUC_INTERNAL void _priv_gst_value_initialize (void); G_GNUC_INTERNAL void _priv_gst_debug_init (void); +G_GNUC_INTERNAL void _priv_gst_context_initialize (void); +G_GNUC_INTERNAL void _priv_gst_toc_initialize (void); +G_GNUC_INTERNAL void _priv_gst_date_time_initialize (void); + +/* cleanup functions called from gst_deinit(). */ +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); /* Private registry functions */ G_GNUC_INTERNAL @@ -123,18 +153,53 @@ 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); /* used in both gststructure.c and gstcaps.c; numbers are completely made up */ #define STRUCTURE_ESTIMATED_STRING_LEN(s) (16 + gst_structure_n_fields(s) * 22) +#define FEATURES_ESTIMATED_STRING_LEN(s) (16 + gst_caps_features_get_size(s) * 14) G_GNUC_INTERNAL gboolean priv_gst_structure_append_to_gstring (const GstStructure * structure, GString * s); +G_GNUC_INTERNAL +gboolean priv__gst_structure_append_template_to_gstring (GQuark field_id, + const GValue *value, + gpointer user_data); + +G_GNUC_INTERNAL +void priv_gst_caps_features_append_to_gstring (const GstCapsFeatures * features, GString *s); + +G_GNUC_INTERNAL +gboolean priv_gst_structure_parse_name (gchar * str, gchar **start, gchar ** end, gchar ** next); +G_GNUC_INTERNAL +gboolean priv_gst_structure_parse_fields (gchar *str, gchar ** end, GstStructure *structure); + +/* used in gstvalue.c and gststructure.c */ + +#define GST_WRAPPED_PTR_FORMAT "p\aa" + +G_GNUC_INTERNAL +gchar *priv_gst_string_take_and_wrap (gchar * s); + /* registry cache backends */ G_GNUC_INTERNAL gboolean priv_gst_registry_binary_read_cache (GstRegistry * registry, const char *location); @@ -163,11 +228,20 @@ gint __gst_date_time_compare (const GstDateTime * dt1, const GstDateTime * dt2); G_GNUC_INTERNAL gchar * __gst_date_time_serialize (GstDateTime * datetime, gboolean with_usecs); +/* For use in gstdebugutils */ +G_GNUC_INTERNAL +GstCapsFeatures * __gst_caps_get_features_unchecked (const GstCaps * caps, guint idx); + #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 \ @@ -190,42 +264,48 @@ 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_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: */ #define GST_CAT_POLL _priv_GST_CAT_POLL extern GstDebugCategory *_priv_GST_CAT_POLL; +#define GST_CAT_PROTECTION _priv_GST_CAT_PROTECTION +extern GstDebugCategory *_priv_GST_CAT_PROTECTION; + +extern GstClockTime _priv_gst_start_time; + #else #define GST_CAT_GST_INIT NULL @@ -262,9 +342,16 @@ extern GstDebugCategory *_priv_GST_CAT_POLL; #define GST_CAT_POLL NULL #define GST_CAT_META NULL #define GST_CAT_LOCKING NULL +#define GST_CAT_CONTEXT NULL +#define GST_CAT_PROTECTION NULL #endif +#ifdef GST_DISABLE_GST_DEBUG +/* for _gst_element_error_printf */ +#define __gst_vasprintf __gst_info_fallback_vasprintf +int __gst_vasprintf (char **result, char const *format, va_list args); +#endif /**** objects made opaque until the private bits have been made private ****/ @@ -281,8 +368,6 @@ struct _GstPlugin { /*< private >*/ GstPluginDesc desc; - GstPluginDesc *orig_desc; - gchar * filename; gchar * basename; /* base name (non-dir part) of plugin path */ @@ -334,7 +419,7 @@ struct _GstTypeFindFactory { GstTypeFindFunction function; gchar ** extensions; - GstCaps * caps; /* FIXME: not yet saved in registry */ + GstCaps * caps; gpointer user_data; GDestroyNotify user_data_notify; @@ -349,6 +434,27 @@ struct _GstTypeFindFactoryClass { gpointer _gst_reserved[GST_PADDING]; }; +struct _GstTracerFactory { + GstPluginFeature feature; + /* */ + + GType type; + + /* + gpointer user_data; + GDestroyNotify user_data_notify; + */ + + gpointer _gst_reserved[GST_PADDING]; +}; + +struct _GstTracerFactoryClass { + GstPluginFeatureClass parent; + /* */ + + gpointer _gst_reserved[GST_PADDING]; +}; + struct _GstElementFactory { GstPluginFeature parent; @@ -375,5 +481,37 @@ struct _GstElementFactoryClass { gpointer _gst_reserved[GST_PADDING]; }; +struct _GstDeviceProviderFactory { + GstPluginFeature feature; + /* */ + + GType type; /* unique GType the device factory or 0 if not loaded */ + + volatile GstDeviceProvider *provider; + gpointer metadata; + + gpointer _gst_reserved[GST_PADDING]; +}; + +struct _GstDeviceProviderFactoryClass { + GstPluginFeatureClass parent; + /* */ + + gpointer _gst_reserved[GST_PADDING]; +}; + +struct _GstDynamicTypeFactory { + GstPluginFeature feature; + + GType type; /* GType of the type, when loaded. 0 if not */ +}; + +struct _GstDynamicTypeFactoryClass { + GstPluginFeatureClass parent; +}; + +/* privat flag used by GstBus / GstMessage */ +#define GST_MESSAGE_FLAG_ASYNC_DELIVERY (GST_MINI_OBJECT_FLAG_LAST << 0) + G_END_DECLS #endif /* __GST_PRIVATE_H__ */