![]() | ![]() | ![]() | GStreamer 0.9 Library Reference Manual | ![]() |
---|
gstcontrol — dynamic parameter functionality.
#include <libs/control/control.h> void gst_control_init (int *argc, char **argv[]);
This library provides a manager component (GstDParamManager) that maintains a list of dynamically controlable parameters for a GstElement. Just think of a volume slider in a mixer.
GstElement instances wanting to provide dynamic parameters, need to provide a GParamSpec and an update method. The application that will later use the control parameter, will create a DParam instance and attach that to use provided GParamSpec and update method. The control library provides several DParam implementations that can be used interchangably. The base on just updated the parameter, while others can smooth the control changes.
To use this library in a application one needs to add some code to initialize it.
Example 1. Adding the control library to an application (step 1)
... #include <gst/gst.h> #include <gst/control/control.h> ... gst_init(&argc,&argv); gst_control_init(&argc,&argv); ...
The next step is to get hold of the GstDParamManager instance of a GstElement and set the working mode of the manager.
Example 2. Adding the control library to an application (step 2)
dparam_manager=gst_dpman_get_manager(element); gst_dpman_set_mode(dparam_manager, "synchronous");
Finally one need to attach a new DParam to the paramter spec.
Example 3. Adding the control library to an application (step 3)
pspec=gst_dpman_get_param_spec(dparam_manager,"volume"); dparam=gst_dparam_new(G_PARAM_SPEC_VALUE_TYPE(pspec)); gst_dpman_attach_dparam(dparam_manager,g_param_spec_get_name(pspecs),dparam);
For a full example look at the <file>gst-plugins/gst/sine/demo-dparams.c</file>
To add dparam support to a plugin look at <file>gst-plugins/gst/sine/gstsinesrc.c</file> or <file>gst-plugins/gst/volume/gstvolume.c</file>. The key concept is to call GST_DPMAN_PREPROCESS() before processing data and to wrap the data processing (chain or loop function) by GST_DPMAN_PROCESS(). This allows the manager to interupt processing to apply new control values.
<< gstcontrol | GstDParamManager >> |