GstControlSource

GstControlSource — base class for control source sources

Synopsis

#include <gst/gst.h>

                    GstValueArray;
struct              GstControlSource;
struct              GstControlSourceClass;
gboolean            (*GstControlSourceGetValue)         (GstControlSource *self,
                                                         GstClockTime timestamp,
                                                         gdouble *value);
gboolean            (*GstControlSourceGetValueArray)    (GstControlSource *self,
                                                         GstClockTime timestamp,
                                                         GstClockTime interval,
                                                         guint n_values,
                                                         gdouble *values);
struct              GstTimedValue;
gboolean            gst_control_source_get_value        (GstControlSource *self,
                                                         GstClockTime timestamp,
                                                         gdouble *value);
gboolean            gst_control_source_get_value_array  (GstControlSource *self,
                                                         GstClockTime timestamp,
                                                         GstClockTime interval,
                                                         guint n_values,
                                                         gdouble *values);

Object Hierarchy

  GObject
   +----GInitiallyUnowned
         +----GstObject
               +----GstControlSource

Description

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.

Details

GstValueArray

typedef struct _GstValueArray GstValueArray;

struct GstControlSource

struct GstControlSource {
  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 */
};

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

struct GstControlSourceClass

struct GstControlSourceClass {
  GstObjectClass parent_class;
};

The class structure of GstControlSource.

GstObjectClass parent_class;

Parent class

GstControlSourceGetValue ()

gboolean            (*GstControlSourceGetValue)         (GstControlSource *self,
                                                         GstClockTime timestamp,
                                                         gdouble *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 :

TRUE if the value was successfully calculated.

GstControlSourceGetValueArray ()

gboolean            (*GstControlSourceGetValueArray)    (GstControlSource *self,
                                                         GstClockTime timestamp,
                                                         GstClockTime interval,
                                                         guint n_values,
                                                         gdouble *values);

Function for returning an array of values for starting at a given timestamp.

self :

the GstControlSource instance

timestamp :

timestamp for which a value should be calculated

interval :

the time spacing between subsequent values

n_values :

the number of values

values :

array to put control-values in

Returns :

TRUE if the values were successfully calculated.

struct GstTimedValue

struct GstTimedValue {
  GstClockTime timestamp;
  gdouble      value;
};

Structure for saving a timestamp and a value.

GstClockTime timestamp;

timestamp of the value change

gdouble value;

the corresponding value

gst_control_source_get_value ()

gboolean            gst_control_source_get_value        (GstControlSource *self,
                                                         GstClockTime timestamp,
                                                         gdouble *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.

gst_control_source_get_value_array ()

gboolean            gst_control_source_get_value_array  (GstControlSource *self,
                                                         GstClockTime timestamp,
                                                         GstClockTime interval,
                                                         guint n_values,
                                                         gdouble *values);

Gets an array of values for for this GstControlSource.

self :

the GstControlSource object

timestamp :

the first timestamp

interval :

the time steps

n_values :

the number of values to fetch

value_array :

array to put control-values in

Returns :

TRUE if the given array could be filled, FALSE otherwise