mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-25 19:21:06 +00:00
gst/: Re-add gst_element_class_install_std_props, move to gstutils.h.
Original commit message from CVS: * gst/gstelement.h: * gst/gstutils.c: (gst_element_populate_std_props), (gst_element_class_install_std_props): * gst/gstutils.h: Re-add gst_element_class_install_std_props, move to gstutils.h.
This commit is contained in:
parent
a476269842
commit
6f40edb7e1
4 changed files with 131 additions and 2 deletions
|
@ -1,3 +1,11 @@
|
|||
2005-02-01 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
|
||||
|
||||
* gst/gstelement.h:
|
||||
* gst/gstutils.c: (gst_element_populate_std_props),
|
||||
(gst_element_class_install_std_props):
|
||||
* gst/gstutils.h:
|
||||
Re-add gst_element_class_install_std_props, move to gstutils.h.
|
||||
|
||||
2005-01-26 Wim Taymans <wim@fluendo.com>
|
||||
|
||||
* gst/elements/gstidentity.c: (gst_identity_init),
|
||||
|
|
|
@ -273,8 +273,6 @@ struct _GstElementClass
|
|||
/* class stuff */
|
||||
void gst_element_class_add_pad_template (GstElementClass * klass,
|
||||
GstPadTemplate * templ);
|
||||
void gst_element_class_install_std_props (GstElementClass * klass,
|
||||
const gchar * first_name, ...);
|
||||
void gst_element_class_set_details (GstElementClass * klass,
|
||||
const GstElementDetails * details);
|
||||
GstPadTemplate *gst_element_class_get_pad_template (GstElementClass *
|
||||
|
|
119
gst/gstutils.c
119
gst/gstutils.c
|
@ -1416,3 +1416,122 @@ gst_bin_remove_many (GstBin * bin, GstElement * element_1, ...)
|
|||
|
||||
va_end (args);
|
||||
}
|
||||
|
||||
static void
|
||||
gst_element_populate_std_props (GObjectClass * klass, const gchar * prop_name,
|
||||
guint arg_id, GParamFlags flags)
|
||||
{
|
||||
GQuark prop_id = g_quark_from_string (prop_name);
|
||||
GParamSpec *pspec;
|
||||
|
||||
static GQuark fd_id = 0;
|
||||
static GQuark blocksize_id;
|
||||
static GQuark bytesperread_id;
|
||||
static GQuark dump_id;
|
||||
static GQuark filesize_id;
|
||||
static GQuark mmapsize_id;
|
||||
static GQuark location_id;
|
||||
static GQuark offset_id;
|
||||
static GQuark silent_id;
|
||||
static GQuark touch_id;
|
||||
|
||||
if (!fd_id) {
|
||||
fd_id = g_quark_from_static_string ("fd");
|
||||
blocksize_id = g_quark_from_static_string ("blocksize");
|
||||
bytesperread_id = g_quark_from_static_string ("bytesperread");
|
||||
dump_id = g_quark_from_static_string ("dump");
|
||||
filesize_id = g_quark_from_static_string ("filesize");
|
||||
mmapsize_id = g_quark_from_static_string ("mmapsize");
|
||||
location_id = g_quark_from_static_string ("location");
|
||||
offset_id = g_quark_from_static_string ("offset");
|
||||
silent_id = g_quark_from_static_string ("silent");
|
||||
touch_id = g_quark_from_static_string ("touch");
|
||||
}
|
||||
|
||||
if (prop_id == fd_id) {
|
||||
pspec = g_param_spec_int ("fd", "File-descriptor",
|
||||
"File-descriptor for the file being read", 0, G_MAXINT, 0, flags);
|
||||
} else if (prop_id == blocksize_id) {
|
||||
pspec = g_param_spec_ulong ("blocksize", "Block Size",
|
||||
"Block size to read per buffer", 0, G_MAXULONG, 4096, flags);
|
||||
|
||||
} else if (prop_id == bytesperread_id) {
|
||||
pspec = g_param_spec_int ("bytesperread", "Bytes per read",
|
||||
"Number of bytes to read per buffer", G_MININT, G_MAXINT, 0, flags);
|
||||
|
||||
} else if (prop_id == dump_id) {
|
||||
pspec = g_param_spec_boolean ("dump", "Dump",
|
||||
"Dump bytes to stdout", FALSE, flags);
|
||||
|
||||
} else if (prop_id == filesize_id) {
|
||||
pspec = g_param_spec_int64 ("filesize", "File Size",
|
||||
"Size of the file being read", 0, G_MAXINT64, 0, flags);
|
||||
|
||||
} else if (prop_id == mmapsize_id) {
|
||||
pspec = g_param_spec_ulong ("mmapsize", "mmap() Block Size",
|
||||
"Size in bytes of mmap()d regions", 0, G_MAXULONG, 4 * 1048576, flags);
|
||||
|
||||
} else if (prop_id == location_id) {
|
||||
pspec = g_param_spec_string ("location", "File Location",
|
||||
"Location of the file to read", NULL, flags);
|
||||
|
||||
} else if (prop_id == offset_id) {
|
||||
pspec = g_param_spec_int64 ("offset", "File Offset",
|
||||
"Byte offset of current read pointer", 0, G_MAXINT64, 0, flags);
|
||||
|
||||
} else if (prop_id == silent_id) {
|
||||
pspec = g_param_spec_boolean ("silent", "Silent", "Don't produce events",
|
||||
FALSE, flags);
|
||||
|
||||
} else if (prop_id == touch_id) {
|
||||
pspec = g_param_spec_boolean ("touch", "Touch read data",
|
||||
"Touch data to force disk read before " "push ()", TRUE, flags);
|
||||
} else {
|
||||
g_warning ("Unknown - 'standard' property '%s' id %d from klass %s",
|
||||
prop_name, arg_id, g_type_name (G_OBJECT_CLASS_TYPE (klass)));
|
||||
pspec = NULL;
|
||||
}
|
||||
|
||||
if (pspec) {
|
||||
g_object_class_install_property (klass, arg_id, pspec);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_element_class_install_std_props:
|
||||
* @klass: the #GstElementClass to add the properties to.
|
||||
* @first_name: the name of the first property.
|
||||
* in a NULL terminated
|
||||
* @...: the id and flags of the first property, followed by
|
||||
* further 'name', 'id', 'flags' triplets and terminated by NULL.
|
||||
*
|
||||
* Adds a list of standardized properties with types to the @klass.
|
||||
* the id is for the property switch in your get_prop method, and
|
||||
* the flags determine readability / writeability.
|
||||
**/
|
||||
void
|
||||
gst_element_class_install_std_props (GstElementClass * klass,
|
||||
const gchar * first_name, ...)
|
||||
{
|
||||
const char *name;
|
||||
|
||||
va_list args;
|
||||
|
||||
g_return_if_fail (GST_IS_ELEMENT_CLASS (klass));
|
||||
|
||||
va_start (args, first_name);
|
||||
|
||||
name = first_name;
|
||||
|
||||
while (name) {
|
||||
int arg_id = va_arg (args, int);
|
||||
int flags = va_arg (args, int);
|
||||
|
||||
gst_element_populate_std_props ((GObjectClass *) klass, name, arg_id,
|
||||
flags);
|
||||
|
||||
name = va_arg (args, char *);
|
||||
}
|
||||
|
||||
va_end (args);
|
||||
}
|
||||
|
|
|
@ -257,6 +257,10 @@ GstPadLinkReturn gst_element_link_pads_filtered (GstElement *src, const
|
|||
void gst_element_unlink_pads (GstElement *src, const gchar *srcpadname,
|
||||
GstElement *dest, const gchar *destpadname);
|
||||
|
||||
/* element class functions */
|
||||
void gst_element_class_install_std_props (GstElementClass * klass,
|
||||
const gchar * first_name, ...);
|
||||
|
||||
/* pad functions */
|
||||
gboolean gst_pad_can_link (GstPad *srcpad, GstPad *sinkpad);
|
||||
gboolean gst_pad_can_link_filtered (GstPad *srcpad, GstPad *sinkpad, const GstCaps *filtercaps);
|
||||
|
|
Loading…
Reference in a new issue