Documentation updates

Original commit message from CVS:
Documentation updates
Added dump to identity
Fix some warnings in gstelement
This commit is contained in:
Wim Taymans 2002-03-31 14:04:50 +00:00
parent d30487f9d0
commit d7a5d173c8
19 changed files with 551 additions and 46 deletions

View file

@ -374,12 +374,11 @@ cothread_getcurrent (void)
} }
/** /**
* cothread_set_data: * cothread_set_private:
* @thread: the cothread state * @thread: the cothread state
* @key: a key for the data
* @data: the data * @data: the data
* *
* adds data to a cothread * set private data for the cothread.
*/ */
void void
cothread_set_private (cothread_state *thread, gpointer data) cothread_set_private (cothread_state *thread, gpointer data)
@ -387,6 +386,14 @@ cothread_set_private (cothread_state *thread, gpointer data)
thread->priv = data; thread->priv = data;
} }
/**
* cothread_context_set_data:
* @thread: the cothread state
* @key: a key for the data
* @data: the data
*
* adds data to a cothread
*/
void void
cothread_context_set_data (cothread_state *thread, gchar *key, gpointer data) cothread_context_set_data (cothread_state *thread, gchar *key, gpointer data)
{ {
@ -396,13 +403,12 @@ cothread_context_set_data (cothread_state *thread, gchar *key, gpointer data)
} }
/** /**
* cothread_get_data: * cothread_get_private:
* @thread: the cothread state * @thread: the cothread state
* @key: a key for the data
* *
* get data from the cothread * get the private data from the cothread
* *
* Returns: the data assiciated with the key * Returns: the private data of the cothread
*/ */
gpointer gpointer
cothread_get_private (cothread_state *thread) cothread_get_private (cothread_state *thread)
@ -410,6 +416,15 @@ cothread_get_private (cothread_state *thread)
return thread->priv; return thread->priv;
} }
/**
* cothread_context_get_data:
* @thread: the cothread state
* @key: a key for the data
*
* get data from the cothread
*
* Returns: the data associated with the key
*/
gpointer gpointer
cothread_context_get_data (cothread_state * thread, gchar * key) cothread_context_get_data (cothread_state * thread, gchar * key)
{ {

View file

@ -266,8 +266,7 @@ gst_fakesink_chain (GstPad *pad, GstBuffer *buf)
g_signal_emit (G_OBJECT (fakesink), gst_fakesink_signals[SIGNAL_HANDOFF], 0, buf, pad); g_signal_emit (G_OBJECT (fakesink), gst_fakesink_signals[SIGNAL_HANDOFF], 0, buf, pad);
if (fakesink->dump) if (fakesink->dump) {
{
gst_util_dump_mem (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); gst_util_dump_mem (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
} }

View file

@ -51,6 +51,7 @@ enum {
ARG_DROP_PROBABILITY, ARG_DROP_PROBABILITY,
ARG_SILENT, ARG_SILENT,
ARG_LAST_MESSAGE, ARG_LAST_MESSAGE,
ARG_DUMP,
}; };
@ -116,6 +117,9 @@ gst_identity_class_init (GstIdentityClass *klass)
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LAST_MESSAGE, g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LAST_MESSAGE,
g_param_spec_string ("last-message", "last-message", "last-message", g_param_spec_string ("last-message", "last-message", "last-message",
NULL, G_PARAM_READABLE)); NULL, G_PARAM_READABLE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DUMP,
g_param_spec_boolean("dump","Dump","Dump buffer contents",
FALSE, G_PARAM_READWRITE));
gst_identity_signals[SIGNAL_HANDOFF] = gst_identity_signals[SIGNAL_HANDOFF] =
g_signal_new ("handoff", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, g_signal_new ("handoff", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
@ -174,6 +178,7 @@ gst_identity_init (GstIdentity *identity)
identity->error_after = -1; identity->error_after = -1;
identity->drop_probability = 0.0; identity->drop_probability = 0.0;
identity->silent = FALSE; identity->silent = FALSE;
identity->dump = FALSE;
} }
static void static void
@ -206,6 +211,9 @@ gst_identity_chain (GstPad *pad, GstBuffer *buf)
return; return;
} }
} }
if (identity->dump) {
gst_util_dump_mem (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
}
for (i = identity->duplicate; i; i--) { for (i = identity->duplicate; i; i--) {
if (!identity->silent) if (!identity->silent)
@ -275,6 +283,9 @@ gst_identity_set_property (GObject *object, guint prop_id, const GValue *value,
case ARG_DUPLICATE: case ARG_DUPLICATE:
identity->duplicate = g_value_get_uint (value); identity->duplicate = g_value_get_uint (value);
break; break;
case ARG_DUMP:
identity->dump = g_value_get_boolean (value);
break;
case ARG_ERROR_AFTER: case ARG_ERROR_AFTER:
identity->error_after = g_value_get_uint (value); identity->error_after = g_value_get_uint (value);
break; break;
@ -313,6 +324,9 @@ static void gst_identity_get_property(GObject *object, guint prop_id, GValue *va
case ARG_SILENT: case ARG_SILENT:
g_value_set_boolean (value, identity->silent); g_value_set_boolean (value, identity->silent);
break; break;
case ARG_DUMP:
g_value_set_boolean (value, identity->dump);
break;
case ARG_LAST_MESSAGE: case ARG_LAST_MESSAGE:
g_value_set_string (value, identity->last_message); g_value_set_string (value, identity->last_message);
break; break;

View file

@ -63,6 +63,7 @@ struct _GstIdentity {
gfloat drop_probability; gfloat drop_probability;
guint sleep_time; guint sleep_time;
gboolean silent; gboolean silent;
gboolean dump;
gchar *last_message; gchar *last_message;
}; };

View file

@ -26,7 +26,6 @@
#include "gstevent.h" #include "gstevent.h"
#include "gstbin.h" #include "gstbin.h"
#include "gstxml.h" #include "gstxml.h"
#include "gstsystemclock.h"
#include "gstscheduler.h" #include "gstscheduler.h"
@ -152,6 +151,14 @@ gst_bin_new (const gchar * name)
return gst_elementfactory_make ("bin", name); return gst_elementfactory_make ("bin", name);
} }
/**
* gst_bin_get_clock:
* @bin: the bin to get the clock of
*
* Get the current clock of the bin
*
* Returns: the clock of the bin
*/
GstClock* GstClock*
gst_bin_get_clock (GstBin *bin) gst_bin_get_clock (GstBin *bin)
{ {
@ -164,6 +171,14 @@ gst_bin_get_clock (GstBin *bin)
return NULL; return NULL;
} }
/**
* gst_bin_use_clock:
* @bin: the bin to set the clock for
* @clock: the clock to use.
*
* Force the bin to use the given clock. Use NULL to
* force it to use no clock at all.
*/
void void
gst_bin_use_clock (GstBin *bin, GstClock *clock) gst_bin_use_clock (GstBin *bin, GstClock *clock)
{ {
@ -174,6 +189,12 @@ gst_bin_use_clock (GstBin *bin, GstClock *clock)
gst_scheduler_use_clock (GST_ELEMENT_SCHED (bin), clock); gst_scheduler_use_clock (GST_ELEMENT_SCHED (bin), clock);
} }
/**
* gst_bin_auto_clock:
* @bin: the bin to autoclock
*
* Let the bin select a clock automatically.
*/
void void
gst_bin_auto_clock (GstBin *bin) gst_bin_auto_clock (GstBin *bin)
{ {
@ -273,14 +294,13 @@ gst_bin_unset_element_sched (GstElement *element, GstScheduler *sched)
/** /**
* gst_element_connect_elements_many: * gst_bin_add_many:
* @bin: the bin to add the elements to
* @element_1: the first element to add to the bin * @element_1: the first element to add to the bin
* @...: NULL-terminated list of elements to add to the bin * @...: NULL-terminated list of elements to add to the bin
* *
* Add a list of elements to a bin. Uses #gst_bin_add. * Add a list of elements to a bin. Uses #gst_bin_add.
**/ */
/* API FIXME: this should be called gst_element_connect_many, and connect_elements
* should just be connect */
void void
gst_bin_add_many (GstBin *bin, GstElement *element_1, ...) gst_bin_add_many (GstBin *bin, GstElement *element_1, ...)
{ {

View file

@ -697,6 +697,17 @@ gst_caps_intersect (GstCaps *caps1, GstCaps *caps2)
return result; return result;
} }
/**
* gst_caps_normalize:
* @caps: a capabilty
*
* Make the normalisation of the caps. This will return a new caps
* that is equivalent to the input caps with the exception that all
* lists are unrolled. This function is useful when you want to iterate
* the caps.
*
* Returns: The normalisation of the caps.
*/
GstCaps* GstCaps*
gst_caps_normalize (GstCaps *caps) gst_caps_normalize (GstCaps *caps)
{ {

View file

@ -138,6 +138,9 @@ gst_clock_class_init (GstClockClass *klass)
parent_class = g_type_class_ref (GST_TYPE_OBJECT); parent_class = g_type_class_ref (GST_TYPE_OBJECT);
if (!g_thread_supported ())
g_thread_init (NULL);
_gst_clock_entries_chunk = g_mem_chunk_new ("GstClockEntries", _gst_clock_entries_chunk = g_mem_chunk_new ("GstClockEntries",
sizeof (GstClockEntry), sizeof (GstClockEntry) * 32, sizeof (GstClockEntry), sizeof (GstClockEntry) * 32,
G_ALLOC_AND_FREE); G_ALLOC_AND_FREE);
@ -159,6 +162,14 @@ gst_clock_init (GstClock *clock)
clock->active_cond = g_cond_new (); clock->active_cond = g_cond_new ();
} }
/**
* gst_clock_async_supported
* @clock: The clock to query
*
* Check if this clock can support async notification.
*
* Returns: TRUE if async notification is supported.
*/
gboolean gboolean
gst_clock_async_supported (GstClock *clock) gst_clock_async_supported (GstClock *clock)
{ {
@ -167,7 +178,45 @@ gst_clock_async_supported (GstClock *clock)
return clock->async_supported; return clock->async_supported;
} }
/**
* gst_clock_set_speed
* @clock: The clock to modify
* @speed: The speed to set on the clock
*
* Set the speed on the given clock. 1.0 is the default
* speed.
*/
void
gst_clock_set_speed (GstClock *clock, gdouble speed)
{
g_return_if_fail (GST_IS_CLOCK (clock));
clock->speed = speed;
}
/**
* gst_clock_get_speed
* @clock: The clock to query
*
* Get the speed of the given clock.
*
* Returns: the speed of the clock.
*/
gdouble
gst_clock_get_speed (GstClock *clock)
{
g_return_val_if_fail (GST_IS_CLOCK (clock), 0.0);
return clock->speed;
}
/**
* gst_clock_reset
* @clock: The clock to reset
*
* Reset the clock to time 0.
*/
void void
gst_clock_reset (GstClock *clock) gst_clock_reset (GstClock *clock)
{ {
@ -186,6 +235,14 @@ gst_clock_reset (GstClock *clock)
GST_UNLOCK (clock); GST_UNLOCK (clock);
} }
/**
* gst_clock_activate
* @clock: The clock to activate
* @active: flag indication activate or deactivate
*
* Activates or deactivates the clock based on the activate paramater.
* As soon as the clock is activated, the time will start ticking.
*/
void void
gst_clock_activate (GstClock *clock, gboolean active) gst_clock_activate (GstClock *clock, gboolean active)
{ {
@ -213,6 +270,14 @@ gst_clock_activate (GstClock *clock, gboolean active)
g_mutex_unlock (clock->active_mutex); g_mutex_unlock (clock->active_mutex);
} }
/**
* gst_clock_is_active
* @clock: The clock to query
*
* Checks if the given clock is active.
*
* Returns: TRUE if the clock is active.
*/
gboolean gboolean
gst_clock_is_active (GstClock *clock) gst_clock_is_active (GstClock *clock)
{ {
@ -221,6 +286,15 @@ gst_clock_is_active (GstClock *clock)
return clock->active; return clock->active;
} }
/**
* gst_clock_get_time
* @clock: The clock to query
*
* Get the current time of the given clock. The time is always
* monotonically increasing.
*
* Returns: the time of the clock.
*/
GstClockTime GstClockTime
gst_clock_get_time (GstClock *clock) gst_clock_get_time (GstClock *clock)
{ {
@ -270,6 +344,15 @@ gst_clock_wait_async_func (GstClock *clock, GstClockTime time,
return entry; return entry;
} }
/**
* gst_clock_wait
* @clock: The clock to wait on
* @time: The time to wait for
*
* Wait and block till the clock reaches the specified time.
*
* Returns: result of the operation.
*/
GstClockReturn GstClockReturn
gst_clock_wait (GstClock *clock, GstClockTime time) gst_clock_wait (GstClock *clock, GstClockTime time)
{ {
@ -284,6 +367,19 @@ gst_clock_wait (GstClock *clock, GstClockTime time)
return res; return res;
} }
/**
* gst_clock_wait_async
* @clock: The clock to wait on
* @time: The time to wait for
* @func: The callback function
* @user_data: User data passed in the calback
*
* Register a callback on the given clock that will be triggered
* when the clock has reached the given time. A ClockID is returned
* that can be used to cancel the request.
*
* Returns: the clock id or NULL when async notification is not supported.
*/
GstClockID GstClockID
gst_clock_wait_async (GstClock *clock, GstClockTime time, gst_clock_wait_async (GstClock *clock, GstClockTime time,
GstClockCallback func, gpointer user_data) GstClockCallback func, gpointer user_data)
@ -296,6 +392,52 @@ gst_clock_wait_async (GstClock *clock, GstClockTime time,
return NULL; return NULL;
} }
/**
* gst_clock_cancel_wait_async
* @clock: The clock to cancel the request on
* @id: The id to cancel
*
* Cancel an outstanding async notification request with the given ID.
*/
void
gst_clock_cancel_wait_async (GstClock *clock, GstClockID id)
{
g_warning ("not supported");
}
/**
* gst_clock_notify_async
* @clock: The clock to wait on
* @interval: The interval between notifications
* @func: The callback function
* @user_data: User data passed in the calback
*
* Register a callback on the given clock that will be periodically
* triggered with the specified interval. A ClockID is returned
* that can be used to cancel the request.
*
* Returns: the clock id or NULL when async notification is not supported.
*/
GstClockID
gst_clock_notify_async (GstClock *clock, GstClockTime interval,
GstClockCallback func, gpointer user_data)
{
g_warning ("not supported");
}
/**
* gst_clock_remove_notify_async
* @clock: The clock to cancel the request on
* @id: The id to cancel
*
* Cancel an outstanding async notification request with the given ID.
*/
void
gst_clock_remove_notify_async (GstClock *clock, GstClockID id)
{
g_warning ("not supported");
}
static void static void
gst_clock_unlock_func (GstClock *clock, GstClockTime time, GstClockID id, gpointer user_data) gst_clock_unlock_func (GstClock *clock, GstClockTime time, GstClockID id, gpointer user_data)
{ {
@ -306,6 +448,15 @@ gst_clock_unlock_func (GstClock *clock, GstClockTime time, GstClockID id, gpoint
GST_CLOCK_ENTRY_UNLOCK (entry); GST_CLOCK_ENTRY_UNLOCK (entry);
} }
/**
* gst_clock_wait_id
* @clock: The clock to wait on
* @id: The clock id to wait on
*
* Wait and block on the clockid obtained with gst_clock_wait_async.
*
* Returns: result of the operation.
*/
GstClockReturn GstClockReturn
gst_clock_wait_id (GstClock *clock, GstClockID id) gst_clock_wait_id (GstClock *clock, GstClockID id)
{ {
@ -341,6 +492,14 @@ gst_clock_wait_id (GstClock *clock, GstClockID id)
return res; return res;
} }
/**
* gst_clock_get_next_id
* @clock: The clock to query
*
* Get the clockid of the next event.
*
* Returns: a clockid or NULL is no event is pending.
*/
GstClockID GstClockID
gst_clock_get_next_id (GstClock *clock) gst_clock_get_next_id (GstClock *clock)
{ {
@ -354,6 +513,14 @@ gst_clock_get_next_id (GstClock *clock)
return (GstClockID *) entry; return (GstClockID *) entry;
} }
/**
* gst_clock_id_get_time
* @id: The clockid to query
*
* Get the time of the clock ID
*
* Returns: the time of the given clock id
*/
GstClockTime GstClockTime
gst_clock_id_get_time (GstClockID id) gst_clock_id_get_time (GstClockID id)
{ {
@ -372,6 +539,13 @@ gst_clock_free_entry (GstClock *clock, GstClockEntry *entry)
g_mutex_unlock (_gst_clock_entries_chunk_lock); g_mutex_unlock (_gst_clock_entries_chunk_lock);
} }
/**
* gst_clock_unlock_id
* @clock: The clock that own the id
* @id: The clockid to unlock
*
* Unlock the ClockID.
*/
void void
gst_clock_unlock_id (GstClock *clock, GstClockID id) gst_clock_unlock_id (GstClock *clock, GstClockID id)
{ {
@ -383,6 +557,13 @@ gst_clock_unlock_id (GstClock *clock, GstClockID id)
gst_clock_free_entry (clock, entry); gst_clock_free_entry (clock, entry);
} }
/**
* gst_clock_set_resolution
* @clock: The clock set the resolution on
* @resolution: The resolution to set
*
* Set the accuracy of the clock.
*/
void void
gst_clock_set_resolution (GstClock *clock, guint64 resolution) gst_clock_set_resolution (GstClock *clock, guint64 resolution)
{ {
@ -392,6 +573,14 @@ gst_clock_set_resolution (GstClock *clock, guint64 resolution)
CLASS (clock)->set_resolution (clock, resolution); CLASS (clock)->set_resolution (clock, resolution);
} }
/**
* gst_clock_get_resolution
* @clock: The clock get the resolution of
*
* Get the accuracy of the clock.
*
* Returns: the resolution of the clock in microseconds.
*/
guint64 guint64
gst_clock_get_resolution (GstClock *clock) gst_clock_get_resolution (GstClock *clock)
{ {

View file

@ -90,7 +90,7 @@ struct _GstClockClass {
GType gst_clock_get_type (void); GType gst_clock_get_type (void);
void gst_clock_set_speed (GstClock *clock, gdouble speed); void gst_clock_set_speed (GstClock *clock, gdouble speed);
void gst_clock_get_speed (GstClock *clock, gdouble speed); gdouble gst_clock_get_speed (GstClock *clock);
void gst_clock_activate (GstClock *clock, gboolean active); void gst_clock_activate (GstClock *clock, gboolean active);
gboolean gst_clock_is_active (GstClock *clock); gboolean gst_clock_is_active (GstClock *clock);

View file

@ -288,6 +288,8 @@ gst_element_set_clock (GstElement *element, GstClock *clock)
* @element: GstElement to get the clock of * @element: GstElement to get the clock of
* *
* Get the clock of the element * Get the clock of the element
*
* Returns: the clock of the element.
*/ */
GstClock* GstClock*
gst_element_get_clock (GstElement *element) gst_element_get_clock (GstElement *element)
@ -308,6 +310,8 @@ gst_element_get_clock (GstElement *element)
* @time: the time to wait for * @time: the time to wait for
* *
* Wait for a specific time on the clock * Wait for a specific time on the clock
*
* Returns: the result of the wait operation
*/ */
GstClockReturn GstClockReturn
gst_element_clock_wait (GstElement *element, GstClock *clock, GstClockTime time) gst_element_clock_wait (GstElement *element, GstClock *clock, GstClockTime time)
@ -717,7 +721,8 @@ gst_element_request_pad_by_name (GstElement *element, const gchar *name)
gboolean templ_found = FALSE; gboolean templ_found = FALSE;
GList *list; GList *list;
gint n; gint n;
gchar *str, *data, *endptr; const gchar *data;
gchar *str, *endptr;
g_return_val_if_fail (element != NULL, NULL); g_return_val_if_fail (element != NULL, NULL);
g_return_val_if_fail (GST_IS_ELEMENT (element), NULL); g_return_val_if_fail (GST_IS_ELEMENT (element), NULL);
@ -867,7 +872,7 @@ gst_element_get_compatible_pad (GstElement *element, GstPad *pad)
+ It will use request pads if possible. But both pads will not be requested. + It will use request pads if possible. But both pads will not be requested.
* If multiple connections are possible, only one is established. * If multiple connections are possible, only one is established.
* *
* Return: TRUE if the elements could be connected. * Returns: TRUE if the elements could be connected.
*/ */
gboolean gboolean
gst_element_connect_elements_filtered (GstElement *src, GstElement *dest, gst_element_connect_elements_filtered (GstElement *src, GstElement *dest,
@ -960,7 +965,7 @@ gst_element_connect_elements_filtered (GstElement *src, GstElement *dest,
* Chain together a series of elements. Uses #gst_element_connect_elements. * Chain together a series of elements. Uses #gst_element_connect_elements.
* *
* Returns: TRUE on success, FALSE otherwise. * Returns: TRUE on success, FALSE otherwise.
**/ */
/* API FIXME: this should be called gst_element_connect_many, and connect_elements /* API FIXME: this should be called gst_element_connect_many, and connect_elements
* should just be connect */ * should just be connect */
gboolean gboolean
@ -998,7 +1003,7 @@ gst_element_connect_elements_many (GstElement *element_1, GstElement *element_2,
* connected yet. If multiple connections are possible, only one is * connected yet. If multiple connections are possible, only one is
* established. * established.
* *
* Return: TRUE if the elements could be connected. * Returns: TRUE if the elements could be connected.
*/ */
gboolean gboolean
gst_element_connect_elements (GstElement *src, GstElement *dest) gst_element_connect_elements (GstElement *src, GstElement *dest)
@ -1019,7 +1024,7 @@ gst_element_connect_elements (GstElement *src, GstElement *dest)
* child of the parent of the other element. If they have different * child of the parent of the other element. If they have different
* parents, the connection fails. * parents, the connection fails.
* *
* Return: TRUE if the pads could be connected. * Returns: TRUE if the pads could be connected.
*/ */
gboolean gboolean
gst_element_connect_filtered (GstElement *src, const gchar *srcpadname, gst_element_connect_filtered (GstElement *src, const gchar *srcpadname,
@ -1063,7 +1068,7 @@ gst_element_connect_filtered (GstElement *src, const gchar *srcpadname,
* child of the parent of the other element. If they have different * child of the parent of the other element. If they have different
* parents, the connection fails. * parents, the connection fails.
* *
* Return: TRUE if the pads could be connected. * Returns: TRUE if the pads could be connected.
*/ */
gboolean gboolean
gst_element_connect (GstElement *src, const gchar *srcpadname, gst_element_connect (GstElement *src, const gchar *srcpadname,

View file

@ -146,7 +146,7 @@ gboolean gst_object_check_uniqueness (GList *list, const gchar *name);
#ifndef GST_DISABLE_LOADSAVE_REGISTRY #ifndef GST_DISABLE_LOADSAVE_REGISTRY
xmlNodePtr gst_object_save_thyself (GstObject *object, xmlNodePtr parent); xmlNodePtr gst_object_save_thyself (GstObject *object, xmlNodePtr parent);
void gst_object_restore_thyself (GstObject *object, xmlNodePtr parent); void gst_object_restore_thyself (GstObject *object, xmlNodePtr self);
#else #else
#pragma GCC poison gst_object_save_thyself #pragma GCC poison gst_object_save_thyself
#pragma GCC poison gst_object_restore_thyself #pragma GCC poison gst_object_restore_thyself

View file

@ -1261,8 +1261,9 @@ gst_pad_perform_negotiate (GstPad *srcpad, GstPad *sinkpad)
/** /**
* gst_pad_try_reconnect_filtered: * gst_pad_try_reconnect_filtered:
* @pad: the pad to reconnect * @srcpad: the source"pad to reconnect
* @caps: the capabilities to use in the reconnectiong * @sinkpad: the sink pad to reconnect
* @filtercaps: the capabilities to use in the reconnectiong
* *
* Try to reconnect this pad and its peer with the specified caps * Try to reconnect this pad and its peer with the specified caps
* *
@ -1287,8 +1288,9 @@ gst_pad_try_reconnect_filtered (GstPad *srcpad, GstPad *sinkpad, GstCaps *filter
/** /**
* gst_pad_reconnect_filtered: * gst_pad_reconnect_filtered:
* @pad: the pad to reconnect * @srcpad: the source"pad to reconnect
* @caps: the capabilities to use in the reconnectiong * @sinkpad: the sink pad to reconnect
* @filtercaps: the capabilities to use in the reconnectiong
* *
* Try to reconnect this pad and its peer with the specified caps. * Try to reconnect this pad and its peer with the specified caps.
* *
@ -1499,11 +1501,12 @@ gst_pad_get_allowed_caps (GstPad *pad)
} }
/** /**
* gst_pad_recac_allowed_caps: * gst_pad_recalc_allowed_caps:
* @pad: the pad to recaculate the caps of * @pad: the pad to recaculate the caps of
* *
* Attempt to reconnect the pad to its peer through its filter, set with gst_pad_[re]connect_filtered. * Attempt to reconnect the pad to its peer through its filter,
* FIXME: no one calls this function. why is it here? * set with gst_pad_[re]connect_filtered. This function is useful when a
* plugin has new capabilities on a pad and wants to notify the peer.
* *
* Returns: TRUE on success, FALSE otherwise. * Returns: TRUE on success, FALSE otherwise.
*/ */
@ -2257,21 +2260,22 @@ static GstPad *ghost_pad_parent_class = NULL;
/* static guint gst_ghost_pad_signals[LAST_SIGNAL] = { 0 }; */ /* static guint gst_ghost_pad_signals[LAST_SIGNAL] = { 0 }; */
GType GType
gst_ghost_pad_get_type(void) { gst_ghost_pad_get_type (void)
{
if (!_gst_ghost_pad_type) { if (!_gst_ghost_pad_type) {
static const GTypeInfo pad_info = { static const GTypeInfo pad_info = {
sizeof(GstGhostPadClass), sizeof (GstGhostPadClass),
NULL, NULL,
NULL, NULL,
(GClassInitFunc)gst_ghost_pad_class_init, (GClassInitFunc) gst_ghost_pad_class_init,
NULL, NULL,
NULL, NULL,
sizeof(GstGhostPad), sizeof(GstGhostPad),
8, 8,
(GInstanceInitFunc)gst_ghost_pad_init, (GInstanceInitFunc) gst_ghost_pad_init,
NULL NULL
}; };
_gst_ghost_pad_type = g_type_register_static(GST_TYPE_PAD, "GstGhostPad", &pad_info, 0); _gst_ghost_pad_type = g_type_register_static (GST_TYPE_PAD, "GstGhostPad", &pad_info, 0);
} }
return _gst_ghost_pad_type; return _gst_ghost_pad_type;
} }
@ -2281,9 +2285,9 @@ gst_ghost_pad_class_init (GstGhostPadClass *klass)
{ {
GObjectClass *gobject_class; GObjectClass *gobject_class;
gobject_class = (GObjectClass*)klass; gobject_class = (GObjectClass*) klass;
ghost_pad_parent_class = g_type_class_ref(GST_TYPE_PAD); ghost_pad_parent_class = g_type_class_ref (GST_TYPE_PAD);
} }
static void static void

View file

@ -327,6 +327,12 @@ gst_props_new (const gchar *firstname, ...)
} }
/**
* gst_props_debug:
* @props: the props to debug
*
* Dump the contents of the given properties into the DEBUG log.
*/
void void
gst_props_debug (GstProps *props) gst_props_debug (GstProps *props)
{ {
@ -583,7 +589,7 @@ gst_props_newv (const gchar *firstname, va_list var_args)
* For the optional args, use GST_PROPS_FOO, where FOO is INT, * For the optional args, use GST_PROPS_FOO, where FOO is INT,
* STRING, etc. This macro expands to a variable number of arguments, * STRING, etc. This macro expands to a variable number of arguments,
* hence the lack of precision in the function prototype. No * hence the lack of precision in the function prototype. No
* terminating NULL is necessary. * terminating NULL is necessary as only one property can be changed.
* *
* Returns: the new modified property structure. * Returns: the new modified property structure.
*/ */
@ -762,6 +768,16 @@ gst_props_copy_on_write (GstProps *props)
return new; return new;
} }
/**
* gst_props_get_entry:
* @props: the props to query
* @name: the name of the entry to get
*
* Get the props entry with the geven name
*
* Returns: The props entry with the geven name or NULL when
* the entry was not found.
*/
const GstPropsEntry* const GstPropsEntry*
gst_props_get_entry (GstProps *props, const gchar *name) gst_props_get_entry (GstProps *props, const gchar *name)
{ {
@ -783,12 +799,31 @@ gst_props_get_entry (GstProps *props, const gchar *name)
return NULL; return NULL;
} }
/**
* gst_props_has_property:
* @props: the props to check
* @name: the name of the key to find
*
* Checks if a given props has a property with the given name.
*
* Returns: TRUE if the property was found, FALSE otherwise.
*/
gboolean gboolean
gst_props_has_property (GstProps *props, const gchar *name) gst_props_has_property (GstProps *props, const gchar *name)
{ {
return (gst_props_get_entry (props, name) != NULL); return (gst_props_get_entry (props, name) != NULL);
} }
/**
* gst_props_has_property_typed:
* @props: the props to check
* @name: the name of the key to find
* @type: the type of the required property
*
* Checks if a given props has a property with the given name and the given type.
*
* Returns: TRUE if the property was found, FALSE otherwise.
*/
gboolean gboolean
gst_props_has_property_typed (GstProps *props, const gchar *name, GstPropsType type) gst_props_has_property_typed (GstProps *props, const gchar *name, GstPropsType type)
{ {
@ -801,6 +836,16 @@ gst_props_has_property_typed (GstProps *props, const gchar *name, GstPropsType t
return (entry->propstype == type); return (entry->propstype == type);
} }
/**
* gst_props_has_fixed_property:
* @props: the props to check
* @name: the name of the key to find
*
* Checks if a given props has a property with the given name that
* is also fixed, ie. is not a list or a range.
*
* Returns: TRUE if the property was found, FALSE otherwise.
*/
gboolean gboolean
gst_props_has_fixed_property (GstProps *props, const gchar *name) gst_props_has_fixed_property (GstProps *props, const gchar *name)
{ {
@ -813,6 +858,14 @@ gst_props_has_fixed_property (GstProps *props, const gchar *name)
return !GST_PROPS_ENTRY_IS_VARIABLE (entry); return !GST_PROPS_ENTRY_IS_VARIABLE (entry);
} }
/**
* gst_props_entry_get_type:
* @entry: the props entry to query
*
* Get the type of the given props entry.
*
* Returns: The type of the props entry.
*/
GstPropsType GstPropsType
gst_props_entry_get_type (const GstPropsEntry *entry) gst_props_entry_get_type (const GstPropsEntry *entry)
{ {
@ -821,6 +874,14 @@ gst_props_entry_get_type (const GstPropsEntry *entry)
return entry->propstype; return entry->propstype;
} }
/**
* gst_props_entry_get_name:
* @entry: the props entry to query
*
* Get the name of the given props entry.
*
* Returns: The name of the props entry.
*/
const gchar* const gchar*
gst_props_entry_get_name (const GstPropsEntry *entry) gst_props_entry_get_name (const GstPropsEntry *entry)
{ {
@ -829,6 +890,15 @@ gst_props_entry_get_name (const GstPropsEntry *entry)
return g_quark_to_string (entry->propid); return g_quark_to_string (entry->propid);
} }
/**
* gst_props_entry_is_fixed:
* @entry: the props entry to query
*
* Checks if the props entry is fixe, ie. is not a list
* or a range.
*
* Returns: TRUE is the props entry is fixed.
*/
gboolean gboolean
gst_props_entry_is_fixed (const GstPropsEntry *entry) gst_props_entry_is_fixed (const GstPropsEntry *entry)
{ {
@ -847,6 +917,15 @@ gst_props_entry_getv (const GstPropsEntry *entry, gboolean safe, va_list var_arg
return result; return result;
} }
/**
* gst_props_entry_get:
* @entry: the props entry to query
* @...: a pointer to a type that can hold the value.
*
* Gets the contents of the entry.
*
* Returns: TRUE is the props entry could be fetched.
*/
gboolean gboolean
gst_props_entry_get (const GstPropsEntry *entry, ...) gst_props_entry_get (const GstPropsEntry *entry, ...)
{ {
@ -877,6 +956,16 @@ gst_props_entry_get_safe (const GstPropsEntry *entry, ...)
return result; return result;
} }
/**
* gst_props_get:
* @props: the props to query
* @first_name: the first key
* @...: a pointer to a datastructure that can hold the value.
*
* Gets the contents of the props into given key/value pairs.
*
* Returns: TRUE is the props entry could be fetched.
*/
gboolean gboolean
gst_props_get (GstProps *props, gchar *first_name, ...) gst_props_get (GstProps *props, gchar *first_name, ...)
{ {
@ -899,55 +988,136 @@ gst_props_get (GstProps *props, gchar *first_name, ...)
return TRUE; return TRUE;
} }
/**
* gst_props_entry_get_int:
* @entry: the props entry to query
* @val: a pointer to a gint to hold the value.
*
* Get the contents of the entry into the given gint.
*
* Returns: TRUE is the value could be fetched. FALSE if the
* entry is not of given type.
*/
gboolean gboolean
gst_props_entry_get_int (const GstPropsEntry *entry, gint *val) gst_props_entry_get_int (const GstPropsEntry *entry, gint *val)
{ {
return gst_props_entry_get_safe (entry, GST_PROPS_INT_TYPE, val); return gst_props_entry_get_safe (entry, GST_PROPS_INT_TYPE, val);
} }
/**
* gst_props_entry_get_float:
* @entry: the props entry to query
* @val: a pointer to a gfloat to hold the value.
*
* Get the contents of the entry into the given gfloat.
*
* Returns: TRUE is the value could be fetched. FALSE if the
* entry is not of given type.
*/
gboolean gboolean
gst_props_entry_get_float (const GstPropsEntry *entry, gfloat *val) gst_props_entry_get_float (const GstPropsEntry *entry, gfloat *val)
{ {
return gst_props_entry_get_safe (entry, GST_PROPS_FLOAT_TYPE, val); return gst_props_entry_get_safe (entry, GST_PROPS_FLOAT_TYPE, val);
} }
/**
* gst_props_entry_get_fourcc_int:
* @entry: the props entry to query
* @val: a pointer to a guint32 to hold the value.
*
* Get the contents of the entry into the given guint32.
*
* Returns: TRUE is the value could be fetched. FALSE if the
* entry is not of given type.
*/
gboolean gboolean
gst_props_entry_get_fourcc_int (const GstPropsEntry *entry, guint32 *val) gst_props_entry_get_fourcc_int (const GstPropsEntry *entry, guint32 *val)
{ {
return gst_props_entry_get_safe (entry, GST_PROPS_FOURCC_TYPE, val); return gst_props_entry_get_safe (entry, GST_PROPS_FOURCC_TYPE, val);
} }
/**
* gst_props_entry_get_boolean:
* @entry: the props entry to query
* @val: a pointer to a gboolean to hold the value.
*
* Get the contents of the entry into the given gboolean.
*
* Returns: TRUE is the value could be fetched. FALSE if the
* entry is not of given type.
*/
gboolean gboolean
gst_props_entry_get_boolean (const GstPropsEntry *entry, gboolean *val) gst_props_entry_get_boolean (const GstPropsEntry *entry, gboolean *val)
{ {
return gst_props_entry_get_safe (entry, GST_PROPS_BOOL_TYPE, val); return gst_props_entry_get_safe (entry, GST_PROPS_BOOL_TYPE, val);
} }
/**
* gst_props_entry_get_string:
* @entry: the props entry to query
* @val: a pointer to a gchar* to hold the value.
*
* Get the contents of the entry into the given gchar*.
*
* Returns: TRUE is the value could be fetched. FALSE if the
* entry is not of given type.
*/
gboolean gboolean
gst_props_entry_get_string (const GstPropsEntry *entry, const gchar **val) gst_props_entry_get_string (const GstPropsEntry *entry, const gchar **val)
{ {
return gst_props_entry_get_safe (entry, GST_PROPS_STRING_TYPE, val); return gst_props_entry_get_safe (entry, GST_PROPS_STRING_TYPE, val);
} }
/**
* gst_props_entry_get_int_range:
* @entry: the props entry to query
* @min: a pointer to a gint to hold the minimun value.
* @max: a pointer to a gint to hold the maximum value.
*
* Get the contents of the entry into the given gints.
*
* Returns: TRUE is the value could be fetched. FALSE if the
* entry is not of given type.
*/
gboolean gboolean
gst_props_entry_get_int_range (const GstPropsEntry *entry, gint *min, gint *max) gst_props_entry_get_int_range (const GstPropsEntry *entry, gint *min, gint *max)
{ {
return gst_props_entry_get_safe (entry, GST_PROPS_INT_RANGE_TYPE, min, max); return gst_props_entry_get_safe (entry, GST_PROPS_INT_RANGE_TYPE, min, max);
} }
/**
* gst_props_entry_get_float_range:
* @entry: the props entry to query
* @min: a pointer to a gfloat to hold the minimun value.
* @max: a pointer to a gfloat to hold the maximum value.
*
* Get the contents of the entry into the given gfloats.
*
* Returns: TRUE is the value could be fetched. FALSE if the
* entry is not of given type.
*/
gboolean gboolean
gst_props_entry_get_float_range (const GstPropsEntry *entry, gfloat *min, gfloat *max) gst_props_entry_get_float_range (const GstPropsEntry *entry, gfloat *min, gfloat *max)
{ {
return gst_props_entry_get_safe (entry, GST_PROPS_FLOAT_RANGE_TYPE, min, max); return gst_props_entry_get_safe (entry, GST_PROPS_FLOAT_RANGE_TYPE, min, max);
} }
/**
* gst_props_entry_get_list:
* @entry: the props entry to query
* @val: a pointer to a GList to hold the value.
*
* Get the contents of the entry into the given GList.
*
* Returns: TRUE is the value could be fetched. FALSE if the
* entry is not of given type.
*/
gboolean gboolean
gst_props_entry_get_list (const GstPropsEntry *entry, const GList **val) gst_props_entry_get_list (const GstPropsEntry *entry, const GList **val)
{ {
return gst_props_entry_get_safe (entry, GST_PROPS_LIST_TYPE, val); return gst_props_entry_get_safe (entry, GST_PROPS_LIST_TYPE, val);
} }
/** /**
* gst_props_merge: * gst_props_merge:
* @props: the property to merge into * @props: the property to merge into
@ -1495,6 +1665,15 @@ end:
return intersection; return intersection;
} }
/**
* gst_props_normalize:
* @props: a property
*
* Unrolls all lists in the given GstProps. This is usefull if you
* want to loop over the props.
*
* Returns: A GList with the unrolled props entries.
*/
GList* GList*
gst_props_normalize (GstProps *props) gst_props_normalize (GstProps *props)
{ {

View file

@ -113,7 +113,7 @@ GstPropsType gst_props_entry_get_type (const GstPropsEntry *entry);
const gchar* gst_props_entry_get_name (const GstPropsEntry *entry); const gchar* gst_props_entry_get_name (const GstPropsEntry *entry);
gboolean gst_props_entry_is_fixed (const GstPropsEntry *entry); gboolean gst_props_entry_is_fixed (const GstPropsEntry *entry);
gboolean gst_props_entry_get (const GstPropsEntry *props, ...); gboolean gst_props_entry_get (const GstPropsEntry *entry, ...);
gboolean gst_props_entry_get_int (const GstPropsEntry *entry, gint *val); gboolean gst_props_entry_get_int (const GstPropsEntry *entry, gint *val);
gboolean gst_props_entry_get_float (const GstPropsEntry *entry, gfloat *val); gboolean gst_props_entry_get_float (const GstPropsEntry *entry, gfloat *val);

View file

@ -193,7 +193,7 @@ gst_scheduler_add_element (GstScheduler *sched, GstElement *element)
/** /**
* gst_scheduler_remove_element: * gst_scheduler_remove_element:
* @sched: the schedulerr * @sched: the schedulerr
* @element: the element to remov * @element: the element to remove
* *
* Remove an element from the schedulerr. * Remove an element from the schedulerr.
*/ */
@ -270,6 +270,13 @@ gst_scheduler_state_transition (GstScheduler *sched, GstElement *element, gint t
return GST_STATE_SUCCESS; return GST_STATE_SUCCESS;
} }
/**
* gst_scheduler_add_scheduler:
* @sched: the schedulerr
* @sched2: the scheduler to add
*
a Notifies the scheduler that it has to monitor this scheduler.
*/
void void
gst_scheduler_add_scheduler (GstScheduler *sched, GstScheduler *sched2) gst_scheduler_add_scheduler (GstScheduler *sched, GstScheduler *sched2)
{ {
@ -283,6 +290,13 @@ gst_scheduler_add_scheduler (GstScheduler *sched, GstScheduler *sched2)
CLASS (sched)->add_scheduler (sched, sched2); CLASS (sched)->add_scheduler (sched, sched2);
} }
/**
* gst_scheduler_remove_scheduler:
* @sched: the schedulerr
* @sched2: the scheduler to remove
*
a Notifies the scheduler that it can stop monitoring this scheduler.
*/
void void
gst_scheduler_remove_scheduler (GstScheduler *sched, GstScheduler *sched2) gst_scheduler_remove_scheduler (GstScheduler *sched, GstScheduler *sched2)
{ {
@ -296,7 +310,6 @@ gst_scheduler_remove_scheduler (GstScheduler *sched, GstScheduler *sched2)
CLASS (sched)->remove_scheduler (sched, sched2); CLASS (sched)->remove_scheduler (sched, sched2);
} }
/** /**
* gst_scheduler_lock_element: * gst_scheduler_lock_element:
* @sched: the scheduler * @sched: the scheduler
@ -387,6 +400,14 @@ gst_scheduler_interrupt (GstScheduler *sched, GstElement *element)
return FALSE; return FALSE;
} }
/**
* gst_scheduler_get_clock:
* @sched: the scheduler
*
* Get the current clock used by the scheduler
*
* Returns: a GstClock
*/
GstClock* GstClock*
gst_scheduler_get_clock (GstScheduler *sched) gst_scheduler_get_clock (GstScheduler *sched)
{ {
@ -420,6 +441,15 @@ gst_scheduler_get_clock (GstScheduler *sched)
return clock; return clock;
} }
/**
* gst_scheduler_use_clock:
* @sched: the scheduler
* @clock: the clock to use
*
* Force the scheduler to use the given clock. The scheduler will
* always use the given clock even if new clock providers are added
* to this scheduler.
*/
void void
gst_scheduler_use_clock (GstScheduler *sched, GstClock *clock) gst_scheduler_use_clock (GstScheduler *sched, GstClock *clock)
{ {
@ -430,6 +460,14 @@ gst_scheduler_use_clock (GstScheduler *sched, GstClock *clock)
sched->clock = clock; sched->clock = clock;
} }
/**
* gst_scheduler_set_clock:
* @sched: the scheduler
* @clock: the clock to set
*
* Set the clock for the scheduler. The clock will be distributed
* to all the elements managed by the scheduler.
*/
void void
gst_scheduler_set_clock (GstScheduler *sched, GstClock *clock) gst_scheduler_set_clock (GstScheduler *sched, GstClock *clock)
{ {
@ -458,6 +496,12 @@ gst_scheduler_set_clock (GstScheduler *sched, GstClock *clock)
} }
} }
/**
* gst_scheduler_auto_clock:
* @sched: the scheduler
*
* Let the scheduler select a clock automatically.
*/
void void
gst_scheduler_auto_clock (GstScheduler *sched) gst_scheduler_auto_clock (GstScheduler *sched)
{ {
@ -471,10 +515,13 @@ gst_scheduler_auto_clock (GstScheduler *sched)
/** /**
* gst_scheduler_clock_wait: * gst_scheduler_clock_wait:
* @sched: the scheduler * @sched: the scheduler
* @element: the element that wants to wait
* @clock: the clock to use
* @time: the time to wait for
* *
* Perform one iteration on the schedulerr. * Wait till the clock reaches a specific time
* *
* Returns: a boolean indicating something usefull has happened. * Returns: the status of the operation
*/ */
GstClockReturn GstClockReturn
gst_scheduler_clock_wait (GstScheduler *sched, GstElement *element, GstClock *clock, GstClockTime time) gst_scheduler_clock_wait (GstScheduler *sched, GstElement *element, GstClock *clock, GstClockTime time)

View file

@ -87,6 +87,13 @@ gst_system_clock_init (GstSystemClock *clock)
{ {
} }
/**
* gst_system_clock_obtain
*
* Get a handle to the default system clock.
*
* Returns: the default clock.
*/
GstClock* GstClock*
gst_system_clock_obtain (void) gst_system_clock_obtain (void)
{ {

View file

@ -56,7 +56,7 @@ gst_xml_get_type(void)
(GInstanceInitFunc)gst_xml_init, (GInstanceInitFunc)gst_xml_init,
NULL NULL
}; };
xml_type = g_type_register_static (GST_TYPE_OBJECT, "GstXml", &xml_info, 0); xml_type = g_type_register_static (GST_TYPE_OBJECT, "GstXML", &xml_info, 0);
} }
return xml_type; return xml_type;
} }

View file

@ -266,8 +266,7 @@ gst_fakesink_chain (GstPad *pad, GstBuffer *buf)
g_signal_emit (G_OBJECT (fakesink), gst_fakesink_signals[SIGNAL_HANDOFF], 0, buf, pad); g_signal_emit (G_OBJECT (fakesink), gst_fakesink_signals[SIGNAL_HANDOFF], 0, buf, pad);
if (fakesink->dump) if (fakesink->dump) {
{
gst_util_dump_mem (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf)); gst_util_dump_mem (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
} }

View file

@ -51,6 +51,7 @@ enum {
ARG_DROP_PROBABILITY, ARG_DROP_PROBABILITY,
ARG_SILENT, ARG_SILENT,
ARG_LAST_MESSAGE, ARG_LAST_MESSAGE,
ARG_DUMP,
}; };
@ -116,6 +117,9 @@ gst_identity_class_init (GstIdentityClass *klass)
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LAST_MESSAGE, g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LAST_MESSAGE,
g_param_spec_string ("last-message", "last-message", "last-message", g_param_spec_string ("last-message", "last-message", "last-message",
NULL, G_PARAM_READABLE)); NULL, G_PARAM_READABLE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DUMP,
g_param_spec_boolean("dump","Dump","Dump buffer contents",
FALSE, G_PARAM_READWRITE));
gst_identity_signals[SIGNAL_HANDOFF] = gst_identity_signals[SIGNAL_HANDOFF] =
g_signal_new ("handoff", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, g_signal_new ("handoff", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST,
@ -174,6 +178,7 @@ gst_identity_init (GstIdentity *identity)
identity->error_after = -1; identity->error_after = -1;
identity->drop_probability = 0.0; identity->drop_probability = 0.0;
identity->silent = FALSE; identity->silent = FALSE;
identity->dump = FALSE;
} }
static void static void
@ -206,6 +211,9 @@ gst_identity_chain (GstPad *pad, GstBuffer *buf)
return; return;
} }
} }
if (identity->dump) {
gst_util_dump_mem (GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
}
for (i = identity->duplicate; i; i--) { for (i = identity->duplicate; i; i--) {
if (!identity->silent) if (!identity->silent)
@ -275,6 +283,9 @@ gst_identity_set_property (GObject *object, guint prop_id, const GValue *value,
case ARG_DUPLICATE: case ARG_DUPLICATE:
identity->duplicate = g_value_get_uint (value); identity->duplicate = g_value_get_uint (value);
break; break;
case ARG_DUMP:
identity->dump = g_value_get_boolean (value);
break;
case ARG_ERROR_AFTER: case ARG_ERROR_AFTER:
identity->error_after = g_value_get_uint (value); identity->error_after = g_value_get_uint (value);
break; break;
@ -313,6 +324,9 @@ static void gst_identity_get_property(GObject *object, guint prop_id, GValue *va
case ARG_SILENT: case ARG_SILENT:
g_value_set_boolean (value, identity->silent); g_value_set_boolean (value, identity->silent);
break; break;
case ARG_DUMP:
g_value_set_boolean (value, identity->dump);
break;
case ARG_LAST_MESSAGE: case ARG_LAST_MESSAGE:
g_value_set_string (value, identity->last_message); g_value_set_string (value, identity->last_message);
break; break;

View file

@ -63,6 +63,7 @@ struct _GstIdentity {
gfloat drop_probability; gfloat drop_probability;
guint sleep_time; guint sleep_time;
gboolean silent; gboolean silent;
gboolean dump;
gchar *last_message; gchar *last_message;
}; };