mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 17:20:36 +00:00
improve type registration
This commit is contained in:
parent
cdde34f0ee
commit
70be8d8d95
9 changed files with 27 additions and 46 deletions
|
@ -667,6 +667,8 @@ init_post (GOptionContext * context, GOptionGroup * group, gpointer data,
|
||||||
_priv_gst_quarks_initialize ();
|
_priv_gst_quarks_initialize ();
|
||||||
_gst_format_initialize ();
|
_gst_format_initialize ();
|
||||||
_gst_query_initialize ();
|
_gst_query_initialize ();
|
||||||
|
_gst_caps_initialize ();
|
||||||
|
|
||||||
g_type_class_ref (gst_object_get_type ());
|
g_type_class_ref (gst_object_get_type ());
|
||||||
g_type_class_ref (gst_pad_get_type ());
|
g_type_class_ref (gst_pad_get_type ());
|
||||||
g_type_class_ref (gst_element_factory_get_type ());
|
g_type_class_ref (gst_element_factory_get_type ());
|
||||||
|
@ -751,7 +753,6 @@ init_post (GOptionContext * context, GOptionGroup * group, gpointer data,
|
||||||
gst_structure_get_type ();
|
gst_structure_get_type ();
|
||||||
_gst_value_initialize ();
|
_gst_value_initialize ();
|
||||||
g_type_class_ref (gst_param_spec_fraction_get_type ());
|
g_type_class_ref (gst_param_spec_fraction_get_type ());
|
||||||
gst_caps_get_type ();
|
|
||||||
_gst_event_initialize ();
|
_gst_event_initialize ();
|
||||||
_gst_buffer_initialize ();
|
_gst_buffer_initialize ();
|
||||||
_gst_buffer_list_initialize ();
|
_gst_buffer_list_initialize ();
|
||||||
|
|
|
@ -98,6 +98,7 @@ void _priv_gst_quarks_initialize (void);
|
||||||
* we want enterprise edition packagers dancing on our heads) */
|
* we want enterprise edition packagers dancing on our heads) */
|
||||||
void _gst_buffer_initialize (void);
|
void _gst_buffer_initialize (void);
|
||||||
void _gst_buffer_list_initialize (void);
|
void _gst_buffer_list_initialize (void);
|
||||||
|
void _gst_caps_initialize (void);
|
||||||
void _gst_event_initialize (void);
|
void _gst_event_initialize (void);
|
||||||
void _gst_format_initialize (void);
|
void _gst_format_initialize (void);
|
||||||
void _gst_message_initialize (void);
|
void _gst_message_initialize (void);
|
||||||
|
|
|
@ -128,16 +128,7 @@
|
||||||
#include "gstminiobject.h"
|
#include "gstminiobject.h"
|
||||||
#include "gstversion.h"
|
#include "gstversion.h"
|
||||||
|
|
||||||
static GType _gst_buffer_type = 0;
|
GType _gst_buffer_type = 0;
|
||||||
|
|
||||||
GType
|
|
||||||
gst_buffer_get_type (void)
|
|
||||||
{
|
|
||||||
if (G_UNLIKELY (_gst_buffer_type == 0)) {
|
|
||||||
_gst_buffer_type = gst_mini_object_register ("GstBuffer");
|
|
||||||
}
|
|
||||||
return _gst_buffer_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* buffer alignment in bytes
|
/* buffer alignment in bytes
|
||||||
* an alignment of 8 would be the same as malloc() guarantees
|
* an alignment of 8 would be the same as malloc() guarantees
|
||||||
|
@ -167,15 +158,14 @@ aligned_malloc (gpointer * memptr, guint size)
|
||||||
void
|
void
|
||||||
_gst_buffer_initialize (void)
|
_gst_buffer_initialize (void)
|
||||||
{
|
{
|
||||||
/* the GstMiniObject types need to be class_ref'd once before it can be
|
if (G_LIKELY (_gst_buffer_type == 0)) {
|
||||||
* done from multiple threads;
|
_gst_buffer_type = gst_mini_object_register ("GstBuffer");
|
||||||
* see http://bugzilla.gnome.org/show_bug.cgi?id=304551 */
|
|
||||||
gst_buffer_get_type ();
|
|
||||||
#ifdef HAVE_GETPAGESIZE
|
#ifdef HAVE_GETPAGESIZE
|
||||||
#ifdef BUFFER_ALIGNMENT_PAGESIZE
|
#ifdef BUFFER_ALIGNMENT_PAGESIZE
|
||||||
_gst_buffer_data_alignment = getpagesize ();
|
_gst_buffer_data_alignment = getpagesize ();
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -338,7 +328,6 @@ gst_buffer_new (void)
|
||||||
* gracefully or have gotten the size to allocate from an untrusted
|
* gracefully or have gotten the size to allocate from an untrusted
|
||||||
* source such as a media stream.
|
* source such as a media stream.
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* Note that when @size == 0, the buffer data pointer will be NULL.
|
* Note that when @size == 0, the buffer data pointer will be NULL.
|
||||||
*
|
*
|
||||||
* MT safe.
|
* MT safe.
|
||||||
|
|
|
@ -32,6 +32,8 @@ G_BEGIN_DECLS
|
||||||
|
|
||||||
typedef struct _GstBuffer GstBuffer;
|
typedef struct _GstBuffer GstBuffer;
|
||||||
|
|
||||||
|
extern GType _gst_buffer_type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GST_BUFFER_TRACE_NAME:
|
* GST_BUFFER_TRACE_NAME:
|
||||||
*
|
*
|
||||||
|
@ -39,7 +41,7 @@ typedef struct _GstBuffer GstBuffer;
|
||||||
*/
|
*/
|
||||||
#define GST_BUFFER_TRACE_NAME "GstBuffer"
|
#define GST_BUFFER_TRACE_NAME "GstBuffer"
|
||||||
|
|
||||||
#define GST_TYPE_BUFFER (gst_buffer_get_type())
|
#define GST_TYPE_BUFFER (_gst_buffer_type)
|
||||||
#define GST_IS_BUFFER(obj) (GST_IS_MINI_OBJECT_TYPE(obj, GST_TYPE_BUFFER))
|
#define GST_IS_BUFFER(obj) (GST_IS_MINI_OBJECT_TYPE(obj, GST_TYPE_BUFFER))
|
||||||
#define GST_BUFFER_CAST(obj) ((GstBuffer *)(obj))
|
#define GST_BUFFER_CAST(obj) ((GstBuffer *)(obj))
|
||||||
#define GST_BUFFER(obj) (GST_BUFFER_CAST(obj))
|
#define GST_BUFFER(obj) (GST_BUFFER_CAST(obj))
|
||||||
|
@ -287,8 +289,6 @@ struct _GstBuffer {
|
||||||
gpointer _gst_reserved[GST_PADDING];
|
gpointer _gst_reserved[GST_PADDING];
|
||||||
};
|
};
|
||||||
|
|
||||||
GType gst_buffer_get_type (void);
|
|
||||||
|
|
||||||
/* allocation */
|
/* allocation */
|
||||||
GstBuffer * gst_buffer_new (void);
|
GstBuffer * gst_buffer_new (void);
|
||||||
GstBuffer * gst_buffer_new_and_alloc (guint size);
|
GstBuffer * gst_buffer_new_and_alloc (guint size);
|
||||||
|
|
|
@ -159,14 +159,14 @@ struct _GstBufferListIterator
|
||||||
GList *last_returned;
|
GList *last_returned;
|
||||||
};
|
};
|
||||||
|
|
||||||
static GType _gst_buffer_list_type = 0;
|
GType _gst_buffer_list_type = 0;
|
||||||
|
|
||||||
void
|
void
|
||||||
_gst_buffer_list_initialize (void)
|
_gst_buffer_list_initialize (void)
|
||||||
{
|
{
|
||||||
GType type = gst_buffer_list_get_type ();
|
if (G_LIKELY (_gst_buffer_list_type == 0)) {
|
||||||
|
_gst_buffer_list_type = gst_mini_object_register ("GstBufferList");
|
||||||
_gst_buffer_list_type = type;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstBufferList *
|
static GstBufferList *
|
||||||
|
@ -401,15 +401,6 @@ gst_buffer_list_get (GstBufferList * list, guint group, guint idx)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
GType
|
|
||||||
gst_buffer_list_get_type (void)
|
|
||||||
{
|
|
||||||
if (G_UNLIKELY (_gst_buffer_list_type == 0)) {
|
|
||||||
_gst_buffer_list_type = gst_mini_object_register ("GstBufferList");
|
|
||||||
}
|
|
||||||
return _gst_buffer_list_type;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_buffer_list_iterate:
|
* gst_buffer_list_iterate:
|
||||||
* @list: a #GstBufferList
|
* @list: a #GstBufferList
|
||||||
|
|
|
@ -27,7 +27,9 @@
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
#define GST_TYPE_BUFFER_LIST (gst_buffer_list_get_type ())
|
extern GType _gst_buffer_list_type;
|
||||||
|
|
||||||
|
#define GST_TYPE_BUFFER_LIST (_gst_buffer_list_type)
|
||||||
#define GST_IS_BUFFER_LIST(obj) (GST_IS_MINI_OBJECT_TYPE(obj, GST_TYPE_BUFFER_LIST))
|
#define GST_IS_BUFFER_LIST(obj) (GST_IS_MINI_OBJECT_TYPE(obj, GST_TYPE_BUFFER_LIST))
|
||||||
#define GST_BUFFER_LIST_CAST(obj) ((GstBufferList *)obj)
|
#define GST_BUFFER_LIST_CAST(obj) ((GstBufferList *)obj)
|
||||||
#define GST_BUFFER_LIST(obj) (GST_BUFFER_LIST_CAST(obj))
|
#define GST_BUFFER_LIST(obj) (GST_BUFFER_LIST_CAST(obj))
|
||||||
|
@ -104,8 +106,6 @@ typedef GstBufferListItem (*GstBufferListFunc) (GstBuffer **buffer, guint grou
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
|
|
||||||
|
|
||||||
GType gst_buffer_list_get_type (void);
|
|
||||||
|
|
||||||
/* allocation */
|
/* allocation */
|
||||||
GstBufferList *gst_buffer_list_new (void);
|
GstBufferList *gst_buffer_list_new (void);
|
||||||
|
|
||||||
|
|
|
@ -122,19 +122,17 @@ static void gst_caps_transform_to_string (const GValue * src_value,
|
||||||
static gboolean gst_caps_from_string_inplace (GstCaps * caps,
|
static gboolean gst_caps_from_string_inplace (GstCaps * caps,
|
||||||
const gchar * string);
|
const gchar * string);
|
||||||
|
|
||||||
static GType _gst_caps_type = 0;
|
GType _gst_caps_type = 0;
|
||||||
|
|
||||||
GType
|
void
|
||||||
gst_caps_get_type (void)
|
_gst_caps_initialize (void)
|
||||||
{
|
{
|
||||||
if (G_UNLIKELY (_gst_caps_type == 0)) {
|
if (G_LIKELY (_gst_caps_type == 0)) {
|
||||||
_gst_caps_type = gst_mini_object_register ("GstCaps");
|
_gst_caps_type = gst_mini_object_register ("GstCaps");
|
||||||
|
|
||||||
g_value_register_transform_func (_gst_caps_type,
|
g_value_register_transform_func (_gst_caps_type,
|
||||||
G_TYPE_STRING, gst_caps_transform_to_string);
|
G_TYPE_STRING, gst_caps_transform_to_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
return _gst_caps_type;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
|
|
|
@ -27,7 +27,9 @@
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
#define GST_TYPE_CAPS (gst_caps_get_type())
|
extern GType _gst_caps_type;
|
||||||
|
|
||||||
|
#define GST_TYPE_CAPS (_gst_caps_type)
|
||||||
#define GST_CAPS(object) ((GstCaps*)object)
|
#define GST_CAPS(object) ((GstCaps*)object)
|
||||||
#define GST_IS_CAPS(object) (GST_IS_MINI_OBJECT_TYPE(object, GST_TYPE_CAPS))
|
#define GST_IS_CAPS(object) (GST_IS_MINI_OBJECT_TYPE(object, GST_TYPE_CAPS))
|
||||||
|
|
||||||
|
@ -254,7 +256,6 @@ struct _GstStaticCaps {
|
||||||
gpointer _gst_reserved[GST_PADDING];
|
gpointer _gst_reserved[GST_PADDING];
|
||||||
};
|
};
|
||||||
|
|
||||||
GType gst_caps_get_type (void);
|
|
||||||
GstCaps * gst_caps_new_empty (void);
|
GstCaps * gst_caps_new_empty (void);
|
||||||
GstCaps * gst_caps_new_any (void);
|
GstCaps * gst_caps_new_any (void);
|
||||||
GstCaps * gst_caps_new_simple (const char *media_type,
|
GstCaps * gst_caps_new_simple (const char *media_type,
|
||||||
|
|
|
@ -216,7 +216,7 @@ gst_type_find_element_class_init (GstTypeFindElementClass * typefind_class)
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class, PROP_CAPS,
|
g_object_class_install_property (gobject_class, PROP_CAPS,
|
||||||
g_param_spec_boxed ("caps", _("caps"),
|
g_param_spec_boxed ("caps", _("caps"),
|
||||||
_("detected capabilities in stream"), gst_caps_get_type (),
|
_("detected capabilities in stream"), GST_TYPE_CAPS,
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
|
||||||
g_object_class_install_property (gobject_class, PROP_MINIMUM,
|
g_object_class_install_property (gobject_class, PROP_MINIMUM,
|
||||||
g_param_spec_uint ("minimum", _("minimum"),
|
g_param_spec_uint ("minimum", _("minimum"),
|
||||||
|
@ -230,7 +230,7 @@ gst_type_find_element_class_init (GstTypeFindElementClass * typefind_class)
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
g_object_class_install_property (gobject_class, PROP_FORCE_CAPS,
|
g_object_class_install_property (gobject_class, PROP_FORCE_CAPS,
|
||||||
g_param_spec_boxed ("force-caps", _("force caps"),
|
g_param_spec_boxed ("force-caps", _("force caps"),
|
||||||
_("force caps without doing a typefind"), gst_caps_get_type (),
|
_("force caps without doing a typefind"), GST_TYPE_CAPS,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
/**
|
/**
|
||||||
* GstTypeFindElement::have-type:
|
* GstTypeFindElement::have-type:
|
||||||
|
|
Loading…
Reference in a new issue