
<!-- ############ chapter ############# -->

<chapter id="chapter-dparams">
  <title>Supporting Dynamic Parameters</title>
  <para>
    Warning, this part describes 0.10 and is outdated.
  </para>
  <para>
    Sometimes object properties are not powerful enough to control the
    parameters that affect the behaviour of your element.
    When this is the case you can mark these parameters as being Controllable.
    Aware applications can use the controller subsystem to dynamically adjust
    the property values over time.
  </para>

<sect1 id="section-dparam-start">
  <title>Getting Started</title>

  <para>
    The controller subsystem is contained within the
    <filename>gstcontroller</filename> library. You need to include the header in
    your element's source file:
  </para>
  <programlisting>
...
#include &lt;gst/gst.h&gt;
#include &lt;gst/controller/gstcontroller.h&gt;
...
  </programlisting>

  <para>
    Even though the <filename>gstcontroller</filename> library may be linked into
    the host application, you should make sure it is initialized in your
    <filename>plugin_init</filename> function:
  </para>
  <programlisting>
  static gboolean
  plugin_init (GstPlugin *plugin)
  {
    ...
    /* initialize library */
    gst_controller_init (NULL, NULL);
    ...
  }
  </programlisting>
  <para>
    It makes no sense for all GObject parameter to be real-time controlled.
    Therefore the next step is to mark controllable parameters.
    This is done by using the special flag <constant>GST_PARAM_CONTROLLABLE</constant>.
    when setting up GObject params in the <function>_class_init</function> method.    
  </para>
  <programlisting>
  g_object_class_install_property (gobject_class, PROP_FREQ,
      g_param_spec_double ("freq", "Frequency", "Frequency of test signal",
          0.0, 20000.0, 440.0,
          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
  </programlisting>

</sect1>

<sect1 id="chapter-dparam-loop">
  <title>The Data Processing Loop</title>

  <para>
    In the last section we learned how to mark GObject params as controllable.
    Application developers can then queue parameter changes for these parameters.
    The approach the controller subsystem takes is to make plugins responsible 
    for pulling the changes in. This requires just one action:
  </para>
  <programlisting>
    gst_object_sync_values(element,timestamp);
  </programlisting>
  <para>
    This call makes all parameter-changes for the given timestamp active by
    adjusting the GObject properties of the element. Its up to the element to
    determine the synchronisation rate.
  </para>
  
  <sect2 id="chapter-dparam-loop-video">
    <title>The Data Processing Loop for Video Elements</title>
    <para>
      For video processing elements it is the best to synchronise for every frame.
      That means one would add the <function>gst_object_sync_values()</function>
      call described in the previous section to the data processing function of
      the element.
    </para>
  </sect2>

  <sect2 id="chapter-dparam-loop-audio">
    <title>The Data Processing Loop for Audio Elements</title>
    <para>
      For audio processing elements the case is not as easy as for video
      processing elements. The problem here is that audio has a much higher rate.
      For PAL video one will e.g. process 25 full frames per second, but for
      standard audio it will be 44100 samples.
      It is rarely useful to synchronise controllable parameters that often. 
      The easiest solution is also to have just one synchronisation call per
      buffer processing. This makes the control-rate depend on the buffer
      size.
    </para>
    <para>
      Elements that need a specific control-rate need to break their data
      processing loop to synchronise every n-samples.
    </para>
  </sect2>
</sect1>
</chapter>
