+2005-02-22 Stefan Kost <ensonic@users.sf.net>
+
+ * docs/libs/tmpl/gstcontrol.sgml:
+ * docs/libs/tmpl/gstdparam.sgml:
+ * docs/libs/tmpl/gstdplinint.sgml:
+ * docs/libs/tmpl/gstdpman.sgml:
+ * docs/libs/tmpl/gstdpsmooth.sgml:
+ * docs/libs/tmpl/gstunitconvert.sgml:
+ more docs for the state of dparams
+
2005-02-19 Benjamin Otte <in7y118@public.uni-hamburg.de>
* gst/gstelementfactory.c: (gst_element_factory_create):
<!-- ##### SECTION Long_Description ##### -->
<para>
-This library provides a Manager that maintains a list of dynamically
-controlable parameters for a GstElement.
+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.
</para>
<para>
-To use this library one needs to add some code to initialize it.
+#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.
+</para>
+
+<para>
+To use this library in a application one needs to add some code to initialize it.
<example>
-<title>Adding the control library to a project</title>
+<title>Adding the control library to an application (step 1)</title>
<programlisting>
...
&hash;include <gst/gst.h>
...
</programlisting>
</example>
-The next step is to get hold of the GstDParamManager instance of a GstElement.
+</para>
+<para>
+The next step is to get hold of the #GstDParamManager instance of a #GstElement
+and set the working mode of the manager.
+<example>
+<title>Adding the control library to an application (step 2)</title>
+<programlisting>
+dparam_manager=gst_dpman_get_manager(element);
+gst_dpman_set_mode(dparam_manager, "synchronous");
+</programlisting>
+</example>
+</para>
+
+<para>
+Finally one need to attach a new #DParam to the paramter spec.
+<example>
+<title>Adding the control library to an application (step 3)</title>
+<programlisting>
+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);
+</programlisting>
+</example>
+For a full example look at the <file>gst-plugins/gst/sine/demo-dparams.c</file>
+</para>
+<para>
+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.
</para>
<!-- ##### SECTION See_Also ##### -->
</para>
+<!-- ##### SECTION Stability_Level ##### -->
+
+
<!-- ##### FUNCTION gst_control_init ##### -->
<para>
<!-- ##### SECTION Long_Description ##### -->
<para>
-The manager bings all functions to work with #GstElements and their #GstDParams.
+The manager provides a set of functions to work with #GstElements and their #GstDParams.
One can find out which dparams an element has, get the parameter specs and
pick a control change rate.
</para>
</para>
+<!-- ##### SECTION Stability_Level ##### -->
+
+
<!-- ##### STRUCT GstDParamManager ##### -->
<para>