From: <en...@ke...> - 2006-08-10 19:46:30
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: ensonic Date: Thu Aug 10 2006 19:46:26 UTC Log message: * docs/libs/gstreamer-libs-sections.txt: * libs/gst/controller/gstcontroller.c: (_gst_controller_get_property), (_gst_controller_set_property), (_gst_controller_init), (_gst_controller_class_init): * libs/gst/controller/gstcontroller.h: * libs/gst/controller/gsthelper.c: (gst_object_get_control_rate), (gst_object_set_control_rate): API: add gst_object_{s,g}et_control_rate(), add private data section, fix docs * libs/gst/dataprotocol/dataprotocol.c: (gst_dp_packetizer_new): * libs/gst/dataprotocol/dataprotocol.h: add deprecation guards to make gtk-doc happy and allow disabling cruft Modified files: . : ChangeLog docs/libs : gstreamer-libs-sections.txt libs/gst/controller: gstcontroller.c gstcontroller.h gsthelper.c libs/gst/dataprotocol: dataprotocol.c dataprotocol.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2728&r2=1.2729 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/docs/libs/gstreamer-libs-sections.txt.diff?r1=1.44&r2=1.45 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/libs/gst/controller/gstcontroller.c.diff?r1=1.31&r2=1.32 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/libs/gst/controller/gstcontroller.h.diff?r1=1.18&r2=1.19 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/libs/gst/controller/gsthelper.c.diff?r1=1.12&r2=1.13 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/libs/gst/dataprotocol/dataprotocol.c.diff?r1=1.32&r2=1.33 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/libs/gst/dataprotocol/dataprotocol.h.diff?r1=1.10&r2=1.11 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2728 retrieving revision 1.2729 diff -u -d -r1.2728 -r1.2729 --- ChangeLog 9 Aug 2006 15:26:54 -0000 1.2728 +++ ChangeLog 10 Aug 2006 19:46:13 -0000 1.2729 @@ -1,3 +1,19 @@ +2006-08-10 Stefan Kost <en...@us...> + + * docs/libs/gstreamer-libs-sections.txt: + * libs/gst/controller/gstcontroller.c: + (_gst_controller_get_property), (_gst_controller_set_property), + (_gst_controller_init), (_gst_controller_class_init): + * libs/gst/controller/gstcontroller.h: + * libs/gst/controller/gsthelper.c: (gst_object_get_control_rate), + (gst_object_set_control_rate): + API: add gst_object_{s,g}et_control_rate(), add private data section, + fix docs + * libs/gst/dataprotocol/dataprotocol.c: (gst_dp_packetizer_new): + * libs/gst/dataprotocol/dataprotocol.h: + add deprecation guards to make gtk-doc happy and allow disabling cruft 2006-08-09 Tim-Philipp Müller <tim at centricular dot net> * tests/check/Makefile.am: Index: gstreamer-libs-sections.txt RCS file: /cvs/gstreamer/gstreamer/docs/libs/gstreamer-libs-sections.txt,v retrieving revision 1.44 retrieving revision 1.45 diff -u -d -r1.44 -r1.45 --- gstreamer-libs-sections.txt 21 Jul 2006 16:01:34 -0000 1.44 +++ gstreamer-libs-sections.txt 10 Aug 2006 19:46:14 -0000 1.45 @@ -80,6 +80,7 @@ GST_PARAM_CONTROLLABLE <SUBSECTION Standard> GstControllerClass +GstControllerPrivate GST_CONTROLLER GST_IS_CONTROLLER GST_CONTROLLER_CLASS @@ -104,6 +105,8 @@ gst_object_sync_values gst_object_get_value_arrays gst_object_get_value_array +gst_object_get_control_rate +gst_object_set_control_rate <SUBSECTION Private> </SECTION> Index: gstcontroller.c RCS file: /cvs/gstreamer/gstreamer/libs/gst/controller/gstcontroller.c,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- gstcontroller.c 14 Jun 2006 08:26:53 -0000 1.31 +++ gstcontroller.c 10 Aug 2006 19:46:14 -0000 1.32 @@ -78,6 +78,16 @@ static GObjectClass *parent_class = NULL; GQuark __gst_controller_key; +/* property ids */ +enum +{ + PROP_CONTROL_RATE = 1 +}; +struct _GstControllerPrivate + guint control_rate; /* imports from gst-interpolation.c */ @@ -1104,6 +1114,62 @@ /* gobject handling */ static void +_gst_controller_get_property (GObject * object, guint property_id, + GValue * value, GParamSpec * pspec) + GstController *self = GST_CONTROLLER (object); + switch (property_id) { + case PROP_CONTROL_RATE:{ + /* FIXME: don't change if element is playing, controller works for GObject + so this wont work + GstState c_state, p_state; + GstStateChangeReturn ret; + ret = gst_element_get_state (self->object, &c_state, &p_state, 0); + if ((ret == GST_STATE_CHANGE_SUCCESS && + (c_state == GST_STATE_NULL || c_state == GST_STATE_READY)) || + (ret == GST_STATE_CHANGE_ASYNC && + (p_state == GST_STATE_NULL || p_state == GST_STATE_READY))) { + */ + g_value_set_uint (value, self->priv->control_rate); + /* + } + else { + GST_WARNING ("Changing the control rate is only allowed if the elemnt" + " is in NULL or READY"); + } + break; + default:{ + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} +/* sets the given properties for this object */ +static void +_gst_controller_set_property (GObject * object, guint property_id, + const GValue * value, GParamSpec * pspec) + self->priv->control_rate = g_value_get_uint (value); _gst_controller_finalize (GObject * object) { GstController *self = GST_CONTROLLER (object); @@ -1134,7 +1200,9 @@ GstController *self = GST_CONTROLLER (instance); self->lock = g_mutex_new (); - + self->priv = + G_TYPE_INSTANCE_GET_PRIVATE (self, GST_TYPE_CONTROLLER, + GstControllerPrivate); } @@ -1143,17 +1211,23 @@ GObjectClass *gobject_class = G_OBJECT_CLASS (klass); parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (GstControllerPrivate)); + gobject_class->set_property = _gst_controller_set_property; + gobject_class->get_property = _gst_controller_get_property; gobject_class->finalize = _gst_controller_finalize; __gst_controller_key = g_quark_from_string ("gst::controller"); /* register properties */ + g_object_class_install_property (gobject_class, PROP_CONTROL_RATE, + g_param_spec_uint ("control-rate", + "control rate", + "Controlled properties will be updated this many times per second", + 1, G_MAXUINT, 10, G_PARAM_READWRITE)); /* register signals */ /* set defaults for overridable methods */ - /* TODO which of theses do we need ? - BilboEd : none :) - */ GType Index: gstcontroller.h RCS file: /cvs/gstreamer/gstreamer/libs/gst/controller/gstcontroller.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- gstcontroller.h 11 Apr 2006 21:07:26 -0000 1.18 +++ gstcontroller.h 10 Aug 2006 19:46:14 -0000 1.19 @@ -111,6 +111,8 @@ typedef struct _GstController GstController; typedef struct _GstControllerClass GstControllerClass; +typedef struct _GstControllerPrivate GstControllerPrivate; /** * GstController: @@ -127,7 +129,8 @@ GObject *object; /* the object we control */ /*< private >*/ - gpointer _gst_reserved[GST_PADDING]; + GstControllerPrivate *priv; + gpointer _gst_reserved[GST_PADDING - sizeof (GstControllerPrivate *)]; }; struct _GstControllerClass @@ -194,6 +197,9 @@ gboolean gst_object_get_value_array (GObject * object, GstClockTime timestamp, GstValueArray * value_array); +guint gst_object_get_control_rate (GObject * object); +void gst_object_set_control_rate (GObject * object, guint control_rate); /* lib init/done */ gboolean gst_controller_init (int * argc, char ***argv); Index: gsthelper.c RCS file: /cvs/gstreamer/gstreamer/libs/gst/controller/gsthelper.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- gsthelper.c 13 Jan 2006 14:21:48 -0000 1.12 +++ gsthelper.c 10 Aug 2006 19:46:14 -0000 1.13 @@ -107,6 +107,8 @@ * gst_object_get_controller: * @object: the object that has controlled properties * + * Gets the controller for the given GObject + * * Returns: the controller handling some of the given element's properties, %NULL if no controller * Since: 0.9 */ @@ -230,3 +232,62 @@ } return (FALSE); +/** + * gst_object_get_control_rate: + * @object: the object that has controlled properties + * + * Obtain the control-rate for this @object. Audio processing #GstElement + * objects will use this rate to sub-divide their processing loop and call + * gst_object_sync_values() inbetween. The length of the processing segment + * should be sampling-rate/control-rate. + * If the @object is not under property control, this will return 0. This allows + * the element to avoid the sub-dividing. + * The control-rate is not expected to change if the elemnt is in + * %GST_STATE_PAUSED or %GST_STATE_PLAYING. + * Returns: the control rate + * Since: 0.10.10 + */ +guint +gst_object_get_control_rate (GObject * object) + GstController *ctrl; + guint control_rate = 0; + g_return_val_if_fail (G_IS_OBJECT (object), FALSE); + if ((ctrl = g_object_get_qdata (object, __gst_controller_key))) { + g_object_get (ctrl, "control-rate", &control_rate, NULL); + return (control_rate); + * gst_object_set_control_rate: + * @control_rate: the new control-rate (1 .. sampling_rate) + * Change the control-rate for this @object. Audio processing #GstElement + * The control-rate should not change if the elemnt is in %GST_STATE_PAUSED or + * %GST_STATE_PLAYING. +void +gst_object_set_control_rate (GObject * object, guint control_rate) + g_return_if_fail (G_IS_OBJECT (object)); + g_object_set (ctrl, "control-rate", control_rate, NULL); Index: dataprotocol.c RCS file: /cvs/gstreamer/gstreamer/libs/gst/dataprotocol/dataprotocol.c,v retrieving revision 1.33 diff -u -d -r1.32 -r1.33 --- dataprotocol.c 2 Aug 2006 15:19:30 -0000 1.32 +++ dataprotocol.c 10 Aug 2006 19:46:14 -0000 1.33 @@ -380,6 +380,7 @@ * Returns: %TRUE if the header was successfully created. +#ifndef GST_DISABLE_DEPRECATED gboolean gst_dp_header_from_buffer (const GstBuffer * buffer, GstDPHeaderFlag flags, guint * length, guint8 ** header) @@ -387,6 +388,7 @@ return gst_dp_header_from_buffer_any (buffer, flags, length, header, GST_DP_VERSION_0_2); +#endif static gboolean gst_dp_header_from_buffer_1_0 (const GstBuffer * buffer, GstDPHeaderFlag flags, @@ -396,7 +398,7 @@ GST_DP_VERSION_1_0); - /** * gst_dp_packet_from_caps: * @caps: a #GstCaps to create a packet for * @flags: the #GDPHeaderFlags to create the header with @@ -410,6 +412,7 @@ * Returns: %TRUE if the packet was successfully created. gst_dp_packet_from_caps (const GstCaps * caps, GstDPHeaderFlag flags, guint * length, guint8 ** header, guint8 ** payload) @@ -417,6 +420,7 @@ return gst_dp_packet_from_caps_any (caps, flags, length, header, payload, gst_dp_packet_from_caps_1_0 (const GstCaps * caps, GstDPHeaderFlag flags, @@ -440,6 +444,7 @@ gst_dp_packet_from_event (const GstEvent * event, GstDPHeaderFlag flags, @@ -517,6 +522,7 @@ *header = h; return TRUE; gst_dp_packet_from_event_1_0 (const GstEvent * event, GstDPHeaderFlag flags, @@ -869,11 +875,13 @@ ret->version = version; switch (version) { case GST_DP_VERSION_0_2: ret->header_from_buffer = gst_dp_header_from_buffer; ret->packet_from_caps = gst_dp_packet_from_caps; ret->packet_from_event = gst_dp_packet_from_event; break; case GST_DP_VERSION_1_0: ret->header_from_buffer = gst_dp_header_from_buffer_1_0; ret->packet_from_caps = gst_dp_packet_from_caps_1_0; Index: dataprotocol.h RCS file: /cvs/gstreamer/gstreamer/libs/gst/dataprotocol/dataprotocol.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- dataprotocol.h 6 Jun 2006 14:24:00 -0000 1.10 +++ dataprotocol.h 10 Aug 2006 19:46:14 -0000 1.11 @@ -140,21 +140,26 @@ gst_dp_header_payload_type (const guint8 * header); /* converting from GstBuffer/GstEvent/GstCaps */ gboolean gst_dp_header_from_buffer (const GstBuffer * buffer, GstDPHeaderFlag flags, guint * length, guint8 ** header); gboolean gst_dp_packet_from_caps (const GstCaps * caps, guint8 ** header, guint8 ** payload); gboolean gst_dp_packet_from_event (const GstEvent * event, /* converting to GstBuffer/GstEvent/GstCaps */ GstBuffer * gst_dp_buffer_from_header (guint header_length, const guint8 * header); |