GstController

GstController —

Synopsis


#include <gst/controller/gstcontroller.h>


            GstController;
enum        GstInterpolateMode;
gboolean    gst_controller_init             (int *argc,
                                             char ***argv);
GstController* gst_controller_new           (GObject *object,
                                             ...);
GstController* gst_controller_new_list      (GObject *object,
                                             GList *list);
GstController* gst_controller_new_valist    (GObject *object,
                                             va_list var_args);
gboolean    gst_controller_remove_properties
                                            (GstController *self,
                                             ...);
gboolean    gst_controller_remove_properties_list
                                            (GstController *self,
                                             GList *list);
gboolean    gst_controller_remove_properties_valist
                                            (GstController *self,
                                             va_list var_args);
gboolean    gst_controller_set              (GstController *self,
                                             gchar *property_name,
                                             GstClockTime timestamp,
                                             GValue *value);
gboolean    gst_controller_set_from_list    (GstController *self,
                                             gchar *property_name,
                                             GSList *timedvalues);
gboolean    gst_controller_unset            (GstController *self,
                                             gchar *property_name,
                                             GstClockTime timestamp);
GValue*     gst_controller_get              (GstController *self,
                                             gchar *property_name,
                                             GstClockTime timestamp);
const GList* gst_controller_get_all         (GstController *self,
                                             gchar *property_name);
gboolean    gst_controller_sync_values      (GstController *self,
                                             GstClockTime timestamp);
gboolean    gst_controller_get_value_arrays (GstController *self,
                                             GstClockTime timestamp,
                                             GSList *value_arrays);
gboolean    gst_controller_get_value_array  (GstController *self,
                                             GstClockTime timestamp,
                                             GstValueArray *value_array);
gboolean    gst_controller_set_interpolation_mode
                                            (GstController *self,
                                             gchar *property_name,
                                             GstInterpolateMode mode);
#define     GST_PARAM_CONTROLLABLE


Object Hierarchy


  GObject
   +----GstController

Description

Details

GstController

typedef struct _GstController GstController;

The instance structure of GstController


enum GstInterpolateMode

typedef enum
{
  GST_INTERPOLATE_NONE,
  GST_INTERPOLATE_TRIGGER,
  GST_INTERPOLATE_LINEAR,
  GST_INTERPOLATE_QUADRATIC,
  GST_INTERPOLATE_CUBIC,
  GST_INTERPOLATE_USER
} GstInterpolateMode;

The various interpolation modes available.

GST_INTERPOLATE_NONE steps-like interpolation, default
GST_INTERPOLATE_TRIGGER returns the default value of the property, except for times with specific values
GST_INTERPOLATE_LINEAR linear interpolation
GST_INTERPOLATE_QUADRATIC square interpolation
GST_INTERPOLATE_CUBIC cubic interpolation
GST_INTERPOLATE_USER user-provided interpolation

gst_controller_init ()

gboolean    gst_controller_init             (int *argc,
                                             char ***argv);

Initializes the use of the controller library. Suggested to be called right after gst_init().

argc : pointer to the commandline argument count
argv : pointer to the commandline argument values
Returns : the TRUE for success.

gst_controller_new ()

GstController* gst_controller_new           (GObject *object,
                                             ...);

Creates a new GstController for the given object's properties

object : the object of which some properties should be controlled
... : NULL terminated list of property names that should be controlled
Returns : the new controller.

Since 0.9


gst_controller_new_list ()

GstController* gst_controller_new_list      (GObject *object,
                                             GList *list);

Creates a new GstController for the given object's properties

object : the object of which some properties should be controlled
list : list of property names that should be controlled
Returns : the new controller.

Since 0.9


gst_controller_new_valist ()

GstController* gst_controller_new_valist    (GObject *object,
                                             va_list var_args);

Creates a new GstController for the given object's properties

object : the object of which some properties should be controlled
var_args : NULL terminated list of property names that should be controlled
Returns : the new controller.

Since 0.9


gst_controller_remove_properties ()

gboolean    gst_controller_remove_properties
                                            (GstController *self,
                                             ...);

Removes the given object properties from the controller

self : the controller object from which some properties should be removed
... : NULL terminated list of property names that should be removed
Returns : FALSE if one of the given property isn't handled by the controller, TRUE otherwise

Since 0.9


gst_controller_remove_properties_list ()

gboolean    gst_controller_remove_properties_list
                                            (GstController *self,
                                             GList *list);

Removes the given object properties from the controller

self : the controller object from which some properties should be removed
list : GList of property names that should be removed
Returns : FALSE if one of the given property isn't handled by the controller, TRUE otherwise

Since 0.9


gst_controller_remove_properties_valist ()

gboolean    gst_controller_remove_properties_valist
                                            (GstController *self,
                                             va_list var_args);

Removes the given object properties from the controller

self : the controller object from which some properties should be removed
var_args : NULL terminated list of property names that should be removed
Returns : FALSE if one of the given property isn't handled by the controller, TRUE otherwise

Since 0.9


gst_controller_set ()

gboolean    gst_controller_set              (GstController *self,
                                             gchar *property_name,
                                             GstClockTime timestamp,
                                             GValue *value);

Set the value of given controller-handled property at a certain time.

self : the controller object which handles the properties
property_name : the name of the property to set
timestamp : the time the control-change is schedules for
value : the control-value
Returns : FALSE if the values couldn't be set (ex : properties not handled by controller), TRUE otherwise

Since 0.9


gst_controller_set_from_list ()

gboolean    gst_controller_set_from_list    (GstController *self,
                                             gchar *property_name,
                                             GSList *timedvalues);

Sets multiple timed values at once.

self : the controller object which handles the properties
property_name : the name of the property to set
timedvalues : a list with GstTimedValue items
Returns : FALSE if the values couldn't be set (ex : properties not handled by controller), TRUE otherwise

Since 0.9


gst_controller_unset ()

gboolean    gst_controller_unset            (GstController *self,
                                             gchar *property_name,
                                             GstClockTime timestamp);

Used to remove the value of given controller-handled property at a certain time.

self : the controller object which handles the properties
property_name : the name of the property to unset
timestamp : the time the control-change should be removed from
Returns : FALSE if the values couldn't be unset (ex : properties not handled by controller), TRUE otherwise

Since 0.9


gst_controller_get ()

GValue*     gst_controller_get              (GstController *self,
                                             gchar *property_name,
                                             GstClockTime timestamp);

Gets the value for the given controller-handled property at the requested time.

self : the controller object which handles the properties
property_name : the name of the property to get
timestamp : the time the control-change should be read from
Returns : the GValue of the property at the given time, or NULL if the property isn't handled by the controller

Since 0.9


gst_controller_get_all ()

const GList* gst_controller_get_all         (GstController *self,
                                             gchar *property_name);

Returns a read-only copy of the list of GstTimedValue for the given property. Free the list after done with it.

self : the controller to get the list from
property_name : the name of the property to get the list for
Returns : a copy of the list, or NULL if the property isn't handled by the controller

Since 0.9


gst_controller_sync_values ()

gboolean    gst_controller_sync_values      (GstController *self,
                                             GstClockTime timestamp);

Sets the properties of the element, according to the controller that (maybe) handles them and for the given timestamp.

self : the controller that handles the values
timestamp : the time that should be processed
Returns : TRUE if the controller values could be applied to the object properties, FALSE otherwise

Since 0.9


gst_controller_get_value_arrays ()

gboolean    gst_controller_get_value_arrays (GstController *self,
                                             GstClockTime timestamp,
                                             GSList *value_arrays);

Function to be able to get an array of values for one or more given element properties.

If the GstValueArray->values array in list nodes is NULL, it will be created by the function. The type of the values in the array are the same as the property's type.

self : the controller that handles the values
timestamp : the time that should be processed
value_arrays : list to return the control-values in
Returns : TRUE if the given array(s) could be filled, FALSE otherwise

Since 0.9


gst_controller_get_value_array ()

gboolean    gst_controller_get_value_array  (GstController *self,
                                             GstClockTime timestamp,
                                             GstValueArray *value_array);

Function to be able to get an array of values for one element properties

If the GstValueArray->values array is NULL, it will be created by the function. The type of the values in the array are the same as the property's type.

self : the controller that handles the values
timestamp : the time that should be processed
value_array : array to put control-values in
Returns : TRUE if the given array(s) could be filled, FALSE otherwise

Since 0.9


gst_controller_set_interpolation_mode ()

gboolean    gst_controller_set_interpolation_mode
                                            (GstController *self,
                                             gchar *property_name,
                                             GstInterpolateMode mode);

Sets the given interpolation mode on the given property.

self : the controller object
property_name : the name of the property for which to change the interpolation
mode : interpolation mode
Returns : TRUE if the property is handled by the controller, FALSE otherwise

Since 0.9


GST_PARAM_CONTROLLABLE

#define	GST_PARAM_CONTROLLABLE	(1 << (G_PARAM_USER_SHIFT + 1))

Use this flag on GstElement properties you wish to be (eventually) handled by a GstController. TODO: needs to go to gstelemnt.h (to avoid clashes on G_PARAM_USER_SHIFT)