|  |  |  | GStreamer 0.10 Library Reference Manual |  | 
|---|---|---|---|---|
#include <libs/controller/gstcontrolsource.h>
                    GstControlSource;
                    GstControlSourceClass;
gboolean            (*GstControlSourceBind)             (GstControlSource *self,
                                                         GParamSpec *pspec);
gboolean            (*GstControlSourceGetValue)         (GstControlSource *self,
                                                         GstClockTime timestamp,
                                                         GValue *value);
gboolean            (*GstControlSourceGetValueArray)    (GstControlSource *self,
                                                         GstClockTime timestamp,
                                                         GstValueArray *value_array);
                    GstTimedValue;
                    GstValueArray;
gboolean            gst_control_source_bind             (GstControlSource *self,
                                                         GParamSpec *pspec);
gboolean            gst_control_source_get_value        (GstControlSource *self,
                                                         GstClockTime timestamp,
                                                         GValue *value);
gboolean            gst_control_source_get_value_array  (GstControlSource *self,
                                                         GstClockTime timestamp,
                                                         GstValueArray *value_array);
  GObject
   +----GstControlSource
         +----GstInterpolationControlSource
         +----GstLFOControlSource
The GstControlSource is a base class for control value sources that could be used by GstController to get timestamp-value pairs.
A GstControlSource is used by first getting an instance, binding it to a
GParamSpec (for example by using gst_controller_set_control_source()) and
then by having it used by the GstController or calling
gst_control_source_get_value() or gst_control_source_get_value_array().
For implementing a new GstControlSource one has to implement a
GstControlSourceBind method, which will depending on the GParamSpec set up
the control source for use and sets the GstControlSourceGetValue and
GstControlSourceGetValueArray functions. These are then used by
gst_control_source_get_value() or gst_control_source_get_value_array()
to get values for specific timestamps.
typedef struct {
  GstControlSourceGetValue get_value;             /* Returns the value for a property at a given timestamp */
  GstControlSourceGetValueArray get_value_array;  /* Returns values for a property in a given timespan */
} GstControlSource;
The instance structure of GstControlSource.
| GstControlSourceGetValue get_value; | Function for returning a value for a given timestamp | 
| GstControlSourceGetValueArray get_value_array; | Function for returning a GstValueArray for a given timestamp | 
typedef struct {
  GObjectClass parent_class;
  
  GstControlSourceBind bind;  /* Binds the GstControlSource to a specific GParamSpec */
} GstControlSourceClass;
The class structure of GstControlSource.
| GObjectClass parent_class; | Parent class | 
| GstControlSourceBind bind; | Class method for binding the GstControlSource to a specific GParamSpec | 
gboolean (*GstControlSourceBind) (GstControlSource *self, GParamSpec *pspec);
Function for binding a GstControlSource to a GParamSpec.
| self: | the GstControlSource instance | 
| pspec: | GParamSpec that should be bound to | 
| Returns : | TRUEif the property could be bound to the GstControlSource,FALSEotherwise. | 
gboolean (*GstControlSourceGetValue) (GstControlSource *self, GstClockTime timestamp, GValue *value);
Function for returning a value for a given timestamp.
| self: | the GstControlSource instance | 
| timestamp: | timestamp for which a value should be calculated | 
| value: | a GValue which will be set to the result. It must be initialized to the correct type. | 
| Returns : | TRUEif the value was successfully calculated. | 
gboolean (*GstControlSourceGetValueArray) (GstControlSource *self, GstClockTime timestamp, GstValueArray *value_array);
Function for returning a GstValueArray for a given timestamp.
| self: | the GstControlSource instance | 
| timestamp: | timestamp for which a value should be calculated | 
| value_array: | array to put control-values in | 
| Returns : | TRUEif the values were successfully calculated. | 
typedef struct {
  GstClockTime timestamp;
  GValue value;
} GstTimedValue;
Structure for saving a timestamp and a value.
| GstClockTime timestamp; | timestamp of the value change | 
| GValue value; | the corresponding value | 
typedef struct {
  gchar *property_name;
  gint nbsamples;
  GstClockTime sample_interval;
  gpointer *values;
} GstValueArray;
Structure to receive multiple values at once.
| gchar * property_name; | the name of the property this array belongs to | 
| gint nbsamples; | number of samples requested | 
| GstClockTime sample_interval; | interval between each sample | 
| gpointer * values; | pointer to the array | 
gboolean gst_control_source_bind (GstControlSource *self, GParamSpec *pspec);
Binds a GstControlSource to a specific property. This must be called only once for a GstControlSource.
| self: | the GstControlSource object | 
| pspec: | GParamSpec for the property for which this GstControlSource should generate values. | 
| Returns : | TRUEif the GstControlSource was bound correctly,FALSEotherwise. | 
gboolean gst_control_source_get_value (GstControlSource *self, GstClockTime timestamp, GValue *value);
Gets the value for this GstControlSource at a given timestamp.
| self: | the GstControlSource object | 
| timestamp: | the time for which the value should be returned | 
| value: | the value | 
| Returns : | FALSE if the value couldn't be returned, TRUE otherwise. | 
gboolean gst_control_source_get_value_array (GstControlSource *self, GstClockTime timestamp, GstValueArray *value_array);
Gets an array of values for one element property.
All fields of value_array must be filled correctly. Especially the
value_array->values array must be big enough to keep the requested amount
of values.
The type of the values in the array is the same as the property's type.
| self: | the GstControlSource object | 
| timestamp: | the time that should be processed | 
| value_array: | array to put control-values in | 
| Returns : | TRUEif the given array could be filled,FALSEotherwise |