<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="Gst" version="1.0"/>
  <package name="gstreamer-controller-1.0"/>
  <c:include name="gst/controller/controller.h"/>
  <namespace name="GstController"
             version="1.0"
             shared-library="libgstcontroller-1.0.so.4.0"
             c:identifier-prefixes="Gst"
             c:symbol-prefixes="gst">
    <class name="ARGBControlBinding"
           c:symbol-prefix="argb_control_binding"
           c:type="GstARGBControlBinding"
           parent="Gst.ControlBinding"
           glib:type-name="GstARGBControlBinding"
           glib:get-type="gst_argb_control_binding_get_type"
           glib:type-struct="ARGBControlBindingClass">
      <doc xml:space="preserve">A value mapping object that attaches multiple control sources to a guint
gobject properties representing a color. A control value of 0.0 will turn the
color component off and a value of 1.0 will be the color level.</doc>
      <constructor name="new" c:identifier="gst_argb_control_binding_new">
        <doc xml:space="preserve">Create a new control-binding that attaches the given #GstControlSource to the
#GObject property.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the new #GstARGBControlBinding</doc>
          <type name="Gst.ControlBinding" c:type="GstControlBinding*"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">the object of the property</doc>
            <type name="Gst.Object" c:type="GstObject*"/>
          </parameter>
          <parameter name="property_name" transfer-ownership="none">
            <doc xml:space="preserve">the property-name to attach the control source</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cs_a" transfer-ownership="none">
            <doc xml:space="preserve">the control source for the alpha channel</doc>
            <type name="Gst.ControlSource" c:type="GstControlSource*"/>
          </parameter>
          <parameter name="cs_r" transfer-ownership="none">
            <doc xml:space="preserve">the control source for the red channel</doc>
            <type name="Gst.ControlSource" c:type="GstControlSource*"/>
          </parameter>
          <parameter name="cs_g" transfer-ownership="none">
            <doc xml:space="preserve">the control source for the green channel</doc>
            <type name="Gst.ControlSource" c:type="GstControlSource*"/>
          </parameter>
          <parameter name="cs_b" transfer-ownership="none">
            <doc xml:space="preserve">the control source for the blue channel</doc>
            <type name="Gst.ControlSource" c:type="GstControlSource*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="control-source-a"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="Gst.ControlSource"/>
      </property>
      <property name="control-source-b"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="Gst.ControlSource"/>
      </property>
      <property name="control-source-g"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="Gst.ControlSource"/>
      </property>
      <property name="control-source-r"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="Gst.ControlSource"/>
      </property>
      <field name="parent">
        <type name="Gst.ControlBinding" c:type="GstControlBinding"/>
      </field>
      <field name="cs_a" readable="0" private="1">
        <type name="Gst.ControlSource" c:type="GstControlSource*"/>
      </field>
      <field name="cs_r" readable="0" private="1">
        <type name="Gst.ControlSource" c:type="GstControlSource*"/>
      </field>
      <field name="cs_g" readable="0" private="1">
        <type name="Gst.ControlSource" c:type="GstControlSource*"/>
      </field>
      <field name="cs_b" readable="0" private="1">
        <type name="Gst.ControlSource" c:type="GstControlSource*"/>
      </field>
      <field name="cur_value" readable="0" private="1">
        <type name="GObject.Value" c:type="GValue"/>
      </field>
      <field name="last_value" readable="0" private="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="ARGBControlBindingClass"
            c:type="GstARGBControlBindingClass"
            glib:is-gtype-struct-for="ARGBControlBinding">
      <doc xml:space="preserve">The class structure of #GstARGBControlBinding.</doc>
      <field name="parent_class">
        <doc xml:space="preserve">Parent class</doc>
        <type name="Gst.ControlBindingClass" c:type="GstControlBindingClass"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="ControlPoint"
            c:type="GstControlPoint"
            glib:type-name="GstControlPoint"
            glib:get-type="gst_control_point_get_type"
            c:symbol-prefix="control_point">
      <doc xml:space="preserve">An internal structure for value+time and various temporary
values used for interpolation. This "inherits" from
GstTimedValue.</doc>
      <field name="timestamp" writable="1">
        <doc xml:space="preserve">timestamp of the value change</doc>
        <type name="Gst.ClockTime" c:type="GstClockTime"/>
      </field>
      <field name="value" writable="1">
        <doc xml:space="preserve">the new value</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <union name="cache" c:type="cache">
        <record name="cubic" c:type="cubic">
          <field name="h" writable="1">
            <type name="gdouble" c:type="gdouble"/>
          </field>
          <field name="z" writable="1">
            <type name="gdouble" c:type="gdouble"/>
          </field>
        </record>
        <record name="cubic_monotonic" c:type="cubic_monotonic">
          <field name="c1s" writable="1">
            <type name="gdouble" c:type="gdouble"/>
          </field>
          <field name="c2s" writable="1">
            <type name="gdouble" c:type="gdouble"/>
          </field>
          <field name="c3s" writable="1">
            <type name="gdouble" c:type="gdouble"/>
          </field>
        </record>
        <field name="_gst_reserved" writable="1">
          <array zero-terminated="0" c:type="guint8" fixed-size="64">
            <type name="guint8" c:type="guint8"/>
          </array>
        </field>
      </union>
      <method name="copy" c:identifier="gst_control_point_copy">
        <return-value transfer-ownership="full">
          <type name="ControlPoint" c:type="GstControlPoint*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cp" transfer-ownership="none">
            <type name="ControlPoint" c:type="GstControlPoint*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gst_control_point_free">
        <doc xml:space="preserve">Frees all data allocated by a #GstControlPoint instance.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cp" transfer-ownership="none">
            <doc xml:space="preserve">the object to free</doc>
            <type name="ControlPoint" c:type="GstControlPoint*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="DirectControlBinding"
           c:symbol-prefix="direct_control_binding"
           c:type="GstDirectControlBinding"
           parent="Gst.ControlBinding"
           glib:type-name="GstDirectControlBinding"
           glib:get-type="gst_direct_control_binding_get_type"
           glib:type-struct="DirectControlBindingClass">
      <doc xml:space="preserve">A value mapping object that attaches control sources to gobject properties. It
will map the control values directly to the target property range. If a
non-absolute direct control binding is used, the value range [0.0 ... 1.0]
is mapped to full target property range, and all values outside the range
will be clipped. An absolute control binding will not do any value
transformations.</doc>
      <constructor name="new" c:identifier="gst_direct_control_binding_new">
        <doc xml:space="preserve">Create a new control-binding that attaches the #GstControlSource to the
#GObject property. It will map the control source range [0.0 ... 1.0] to
the full target property range, and clip all values outside this range.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the new #GstDirectControlBinding</doc>
          <type name="Gst.ControlBinding" c:type="GstControlBinding*"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">the object of the property</doc>
            <type name="Gst.Object" c:type="GstObject*"/>
          </parameter>
          <parameter name="property_name" transfer-ownership="none">
            <doc xml:space="preserve">the property-name to attach the control source</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cs" transfer-ownership="none">
            <doc xml:space="preserve">the control source</doc>
            <type name="Gst.ControlSource" c:type="GstControlSource*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_absolute"
                   c:identifier="gst_direct_control_binding_new_absolute"
                   version="1.6">
        <doc xml:space="preserve">Create a new control-binding that attaches the #GstControlSource to the
#GObject property. It will directly map the control source values to the
target property range without any transformations.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the new #GstDirectControlBinding</doc>
          <type name="Gst.ControlBinding" c:type="GstControlBinding*"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">the object of the property</doc>
            <type name="Gst.Object" c:type="GstObject*"/>
          </parameter>
          <parameter name="property_name" transfer-ownership="none">
            <doc xml:space="preserve">the property-name to attach the control source</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cs" transfer-ownership="none">
            <doc xml:space="preserve">the control source</doc>
            <type name="Gst.ControlSource" c:type="GstControlSource*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="absolute"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="control-source"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="Gst.ControlSource"/>
      </property>
      <field name="parent">
        <type name="Gst.ControlBinding" c:type="GstControlBinding"/>
      </field>
      <field name="cs" readable="0" private="1">
        <type name="Gst.ControlSource" c:type="GstControlSource*"/>
      </field>
      <field name="cur_value" readable="0" private="1">
        <type name="GObject.Value" c:type="GValue"/>
      </field>
      <field name="last_value" readable="0" private="1">
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="byte_size" readable="0" private="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="convert_value" readable="0" private="1">
        <type name="DirectControlBindingConvertValue"
              c:type="GstDirectControlBindingConvertValue"/>
      </field>
      <field name="convert_g_value" readable="0" private="1">
        <type name="DirectControlBindingConvertGValue"
              c:type="GstDirectControlBindingConvertGValue"/>
      </field>
      <union name="ABI" c:type="ABI">
        <field name="_gst_reserved" writable="1">
          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
            <type name="gpointer" c:type="gpointer"/>
          </array>
        </field>
        <record name="abi" c:type="abi">
          <field name="want_absolute" writable="1">
            <type name="gboolean" c:type="gboolean"/>
          </field>
        </record>
      </union>
    </class>
    <record name="DirectControlBindingClass"
            c:type="GstDirectControlBindingClass"
            glib:is-gtype-struct-for="DirectControlBinding">
      <doc xml:space="preserve">The class structure of #GstDirectControlBinding.</doc>
      <field name="parent_class">
        <doc xml:space="preserve">Parent class</doc>
        <type name="Gst.ControlBindingClass" c:type="GstControlBindingClass"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <callback name="DirectControlBindingConvertGValue"
              c:type="GstDirectControlBindingConvertGValue">
      <doc xml:space="preserve">Function to map a control-value to the target GValue.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve">the #GstDirectControlBinding instance</doc>
          <type name="DirectControlBinding" c:type="GstDirectControlBinding*"/>
        </parameter>
        <parameter name="src_value" transfer-ownership="none">
          <doc xml:space="preserve">the value returned by the cotnrol source</doc>
          <type name="gdouble" c:type="gdouble"/>
        </parameter>
        <parameter name="dest_value" transfer-ownership="none">
          <doc xml:space="preserve">the target GValue</doc>
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="DirectControlBindingConvertValue"
              c:type="GstDirectControlBindingConvertValue">
      <doc xml:space="preserve">Function to map a control-value to the target plain data type.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve">the #GstDirectControlBinding instance</doc>
          <type name="DirectControlBinding" c:type="GstDirectControlBinding*"/>
        </parameter>
        <parameter name="src_value" transfer-ownership="none">
          <doc xml:space="preserve">the value returned by the cotnrol source</doc>
          <type name="gdouble" c:type="gdouble"/>
        </parameter>
        <parameter name="dest_value"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">the target location</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="InterpolationControlSource"
           c:symbol-prefix="interpolation_control_source"
           c:type="GstInterpolationControlSource"
           parent="TimedValueControlSource"
           glib:type-name="GstInterpolationControlSource"
           glib:get-type="gst_interpolation_control_source_get_type"
           glib:type-struct="InterpolationControlSourceClass">
      <doc xml:space="preserve">#GstInterpolationControlSource is a #GstControlSource, that interpolates values between user-given
control points. It supports several interpolation modes and property types.

To use #GstInterpolationControlSource get a new instance by calling
gst_interpolation_control_source_new(), bind it to a #GParamSpec and set some
control points by calling gst_timed_value_control_source_set().

All functions are MT-safe.</doc>
      <constructor name="new"
                   c:identifier="gst_interpolation_control_source_new">
        <doc xml:space="preserve">This returns a new, unbound #GstInterpolationControlSource.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new, unbound #GstInterpolationControlSource.</doc>
          <type name="Gst.ControlSource" c:type="GstControlSource*"/>
        </return-value>
      </constructor>
      <property name="mode" writable="1" transfer-ownership="none">
        <type name="InterpolationMode"/>
      </property>
      <field name="parent">
        <type name="TimedValueControlSource"
              c:type="GstTimedValueControlSource"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="InterpolationControlSourcePrivate"
              c:type="GstInterpolationControlSourcePrivate*"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="InterpolationControlSourceClass"
            c:type="GstInterpolationControlSourceClass"
            glib:is-gtype-struct-for="InterpolationControlSource">
      <field name="parent_class">
        <type name="TimedValueControlSourceClass"
              c:type="GstTimedValueControlSourceClass"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="InterpolationControlSourcePrivate"
            c:type="GstInterpolationControlSourcePrivate"
            disguised="1">
    </record>
    <enumeration name="InterpolationMode"
                 glib:type-name="GstInterpolationMode"
                 glib:get-type="gst_interpolation_mode_get_type"
                 c:type="GstInterpolationMode">
      <doc xml:space="preserve">The various interpolation modes available.</doc>
      <member name="none"
              value="0"
              c:identifier="GST_INTERPOLATION_MODE_NONE"
              glib:nick="none">
        <doc xml:space="preserve">steps-like interpolation, default</doc>
      </member>
      <member name="linear"
              value="1"
              c:identifier="GST_INTERPOLATION_MODE_LINEAR"
              glib:nick="linear">
        <doc xml:space="preserve">linear interpolation</doc>
      </member>
      <member name="cubic"
              value="2"
              c:identifier="GST_INTERPOLATION_MODE_CUBIC"
              glib:nick="cubic">
        <doc xml:space="preserve">cubic interpolation (natural), may overshoot
  the min or max values set by the control point, but is more 'curvy'</doc>
      </member>
      <member name="cubic_monotonic"
              value="3"
              c:identifier="GST_INTERPOLATION_MODE_CUBIC_MONOTONIC"
              glib:nick="cubic-monotonic">
        <doc xml:space="preserve">monotonic cubic interpolation, will not
  produce any values outside of the min-max range set by the control points
  (Since 1.8)</doc>
      </member>
    </enumeration>
    <class name="LFOControlSource"
           c:symbol-prefix="lfo_control_source"
           c:type="GstLFOControlSource"
           parent="Gst.ControlSource"
           glib:type-name="GstLFOControlSource"
           glib:get-type="gst_lfo_control_source_get_type"
           glib:type-struct="LFOControlSourceClass">
      <doc xml:space="preserve">#GstLFOControlSource is a #GstControlSource, that provides several periodic
waveforms as control values.

To use #GstLFOControlSource get a new instance by calling
gst_lfo_control_source_new(), bind it to a #GParamSpec and set the relevant
properties.

All functions are MT-safe.</doc>
      <constructor name="new" c:identifier="gst_lfo_control_source_new">
        <doc xml:space="preserve">This returns a new, unbound #GstLFOControlSource.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new, unbound #GstLFOControlSource.</doc>
          <type name="Gst.ControlSource" c:type="GstControlSource*"/>
        </return-value>
      </constructor>
      <property name="amplitude" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">Specifies the amplitude for the waveform of this #GstLFOControlSource.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="frequency" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">Specifies the frequency that should be used for the waveform
of this #GstLFOControlSource. It should be large enough
so that the period is longer than one nanosecond.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="offset" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">Specifies the value offset for the waveform of this #GstLFOControlSource.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="timeshift" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">Specifies the timeshift to the right that should be used for the waveform
of this #GstLFOControlSource in nanoseconds.

To get a n nanosecond shift to the left use
"(GST_SECOND / frequency) - n".</doc>
        <type name="guint64" c:type="guint64"/>
      </property>
      <property name="waveform" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">Specifies the waveform that should be used for this #GstLFOControlSource.</doc>
        <type name="LFOWaveform"/>
      </property>
      <field name="parent">
        <type name="Gst.ControlSource" c:type="GstControlSource"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="LFOControlSourcePrivate"
              c:type="GstLFOControlSourcePrivate*"/>
      </field>
      <field name="lock" readable="0" private="1">
        <type name="GLib.Mutex" c:type="GMutex"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="LFOControlSourceClass"
            c:type="GstLFOControlSourceClass"
            glib:is-gtype-struct-for="LFOControlSource">
      <field name="parent_class">
        <type name="Gst.ControlSourceClass" c:type="GstControlSourceClass"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="LFOControlSourcePrivate"
            c:type="GstLFOControlSourcePrivate"
            disguised="1">
    </record>
    <enumeration name="LFOWaveform"
                 glib:type-name="GstLFOWaveform"
                 glib:get-type="gst_lfo_waveform_get_type"
                 c:type="GstLFOWaveform">
      <doc xml:space="preserve">The various waveform modes available.</doc>
      <member name="sine"
              value="0"
              c:identifier="GST_LFO_WAVEFORM_SINE"
              glib:nick="sine">
        <doc xml:space="preserve">sine waveform</doc>
      </member>
      <member name="square"
              value="1"
              c:identifier="GST_LFO_WAVEFORM_SQUARE"
              glib:nick="square">
        <doc xml:space="preserve">square waveform</doc>
      </member>
      <member name="saw"
              value="2"
              c:identifier="GST_LFO_WAVEFORM_SAW"
              glib:nick="saw">
        <doc xml:space="preserve">saw waveform</doc>
      </member>
      <member name="reverse_saw"
              value="3"
              c:identifier="GST_LFO_WAVEFORM_REVERSE_SAW"
              glib:nick="reverse-saw">
        <doc xml:space="preserve">reverse saw waveform</doc>
      </member>
      <member name="triangle"
              value="4"
              c:identifier="GST_LFO_WAVEFORM_TRIANGLE"
              glib:nick="triangle">
        <doc xml:space="preserve">triangle waveform</doc>
      </member>
    </enumeration>
    <class name="ProxyControlBinding"
           c:symbol-prefix="proxy_control_binding"
           c:type="GstProxyControlBinding"
           parent="Gst.ControlBinding"
           glib:type-name="GstProxyControlBinding"
           glib:get-type="gst_proxy_control_binding_get_type"
           glib:type-struct="ProxyControlBindingClass">
      <doc xml:space="preserve">A #GstControlBinding that forwards requests to another #GstControlBinding</doc>
      <constructor name="new"
                   c:identifier="gst_proxy_control_binding_new"
                   version="1.12">
        <doc xml:space="preserve">#GstProxyControlBinding forwards all access to data or sync_values()
requests from @property_name on @object to the control binding at
@ref_property_name on @ref_object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a new #GstControlBinding that proxies the control interface between
properties on different #GstObject's</doc>
          <type name="Gst.ControlBinding" c:type="GstControlBinding*"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GstObject</doc>
            <type name="Gst.Object" c:type="GstObject*"/>
          </parameter>
          <parameter name="property_name" transfer-ownership="none">
            <doc xml:space="preserve">the property name in @object to control</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="ref_object" transfer-ownership="none">
            <doc xml:space="preserve">a #GstObject to forward all
             #GstControlBinding requests to</doc>
            <type name="Gst.Object" c:type="GstObject*"/>
          </parameter>
          <parameter name="ref_property_name" transfer-ownership="none">
            <doc xml:space="preserve">the property_name in @ref_object to control</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent" readable="0" private="1">
        <type name="Gst.ControlBinding" c:type="GstControlBinding"/>
      </field>
      <field name="ref_object" readable="0" private="1">
        <type name="GObject.WeakRef" c:type="GWeakRef"/>
      </field>
      <field name="property_name" readable="0" private="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="_padding" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="ProxyControlBindingClass"
            c:type="GstProxyControlBindingClass"
            glib:is-gtype-struct-for="ProxyControlBinding">
      <doc xml:space="preserve">Opaque #GstProxyControlBindingClass struct</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="Gst.ControlBindingClass" c:type="GstControlBindingClass"/>
      </field>
      <field name="_padding" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="TimedValueControlSource"
           c:symbol-prefix="timed_value_control_source"
           c:type="GstTimedValueControlSource"
           parent="Gst.ControlSource"
           abstract="1"
           glib:type-name="GstTimedValueControlSource"
           glib:get-type="gst_timed_value_control_source_get_type"
           glib:type-struct="TimedValueControlSourceClass">
      <doc xml:space="preserve">Base class for #GstControlSource that use time-stamped values.

When overriding bind, chain up first to give this bind implementation a
chance to setup things.

All functions are MT-safe.</doc>
      <method name="find_control_point_iter"
              c:identifier="gst_timed_value_control_source_find_control_point_iter">
        <doc xml:space="preserve">Find last value before given timestamp in control point list.
If all values in the control point list come after the given
timestamp or no values exist, %NULL is returned.

For use in control source implementations.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the found #GSequenceIter or %NULL</doc>
          <type name="GLib.SequenceIter" c:type="GSequenceIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the control source to search in</doc>
            <type name="TimedValueControlSource"
                  c:type="GstTimedValueControlSource*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <doc xml:space="preserve">the search key</doc>
            <type name="Gst.ClockTime" c:type="GstClockTime"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_all"
              c:identifier="gst_timed_value_control_source_get_all">
        <doc xml:space="preserve">Returns a read-only copy of the list of #GstTimedValue for the given property.
Free the list after done with it.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">a copy
of the list, or %NULL if the property isn't handled by the controller</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Gst.TimedValue"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #GstTimedValueControlSource to get the list from</doc>
            <type name="TimedValueControlSource"
                  c:type="GstTimedValueControlSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_count"
              c:identifier="gst_timed_value_control_source_get_count">
        <doc xml:space="preserve">Get the number of control points that are set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of control points that are set.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #GstTimedValueControlSource to get the number of values from</doc>
            <type name="TimedValueControlSource"
                  c:type="GstTimedValueControlSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set" c:identifier="gst_timed_value_control_source_set">
        <doc xml:space="preserve">Set the value of given controller-handled property at a certain time.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">FALSE if the values couldn't be set, TRUE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #GstTimedValueControlSource object</doc>
            <type name="TimedValueControlSource"
                  c:type="GstTimedValueControlSource*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <doc xml:space="preserve">the time the control-change is scheduled for</doc>
            <type name="Gst.ClockTime" c:type="GstClockTime"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the control-value</doc>
            <type name="gdouble" c:type="const gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_from_list"
              c:identifier="gst_timed_value_control_source_set_from_list">
        <doc xml:space="preserve">Sets multiple timed values at once.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">FALSE if the values couldn't be set, TRUE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #GstTimedValueControlSource object</doc>
            <type name="TimedValueControlSource"
                  c:type="GstTimedValueControlSource*"/>
          </instance-parameter>
          <parameter name="timedvalues" transfer-ownership="none">
            <doc xml:space="preserve">a list
with #GstTimedValue items</doc>
            <type name="GLib.SList" c:type="const GSList*">
              <type name="Gst.TimedValue"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="unset" c:identifier="gst_timed_value_control_source_unset">
        <doc xml:space="preserve">Used to remove the value of given controller-handled property at a certain
time.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">FALSE if the value couldn't be unset (i.e. not found, TRUE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #GstTimedValueControlSource object</doc>
            <type name="TimedValueControlSource"
                  c:type="GstTimedValueControlSource*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <doc xml:space="preserve">the time the control-change should be removed from</doc>
            <type name="Gst.ClockTime" c:type="GstClockTime"/>
          </parameter>
        </parameters>
      </method>
      <method name="unset_all"
              c:identifier="gst_timed_value_control_source_unset_all">
        <doc xml:space="preserve">Used to remove all time-stamped values of given controller-handled property</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">the #GstTimedValueControlSource object</doc>
            <type name="TimedValueControlSource"
                  c:type="GstTimedValueControlSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="Gst.ControlSource" c:type="GstControlSource"/>
      </field>
      <field name="lock">
        <type name="GLib.Mutex" c:type="GMutex"/>
      </field>
      <field name="values">
        <type name="GLib.Sequence" c:type="GSequence*"/>
      </field>
      <field name="nvalues">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="valid_cache">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="TimedValueControlSourcePrivate"
              c:type="GstTimedValueControlSourcePrivate*"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <glib:signal name="value-added" when="first" version="1.6">
        <doc xml:space="preserve">Emited right after the new value has been added to @self</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="timed_value" transfer-ownership="none">
            <doc xml:space="preserve">The newly added #GstTimedValue</doc>
            <type name="ControlPoint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="value-changed" when="first" version="1.6">
        <doc xml:space="preserve">Emited right after the new value has been set on @timed_signals</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="timed_value" transfer-ownership="none">
            <doc xml:space="preserve">The #GstTimedValue where the value changed</doc>
            <type name="ControlPoint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="value-removed" when="first" version="1.6">
        <doc xml:space="preserve">Emited when @timed_value is removed from @self</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="timed_value" transfer-ownership="none">
            <doc xml:space="preserve">The removed #GstTimedValue</doc>
            <type name="ControlPoint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="TimedValueControlSourceClass"
            c:type="GstTimedValueControlSourceClass"
            glib:is-gtype-struct-for="TimedValueControlSource">
      <field name="parent_class">
        <type name="Gst.ControlSourceClass" c:type="GstControlSourceClass"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="TimedValueControlSourcePrivate"
            c:type="GstTimedValueControlSourcePrivate"
            disguised="1">
    </record>
    <class name="TriggerControlSource"
           c:symbol-prefix="trigger_control_source"
           c:type="GstTriggerControlSource"
           parent="TimedValueControlSource"
           glib:type-name="GstTriggerControlSource"
           glib:get-type="gst_trigger_control_source_get_type"
           glib:type-struct="TriggerControlSourceClass">
      <doc xml:space="preserve">#GstTriggerControlSource is a #GstControlSource, that returns values from user-given
control points. It allows for a tolerance on the time-stamps.

To use #GstTriggerControlSource get a new instance by calling
gst_trigger_control_source_new(), bind it to a #GParamSpec and set some
control points by calling gst_timed_value_control_source_set().

All functions are MT-safe.</doc>
      <constructor name="new" c:identifier="gst_trigger_control_source_new">
        <doc xml:space="preserve">This returns a new, unbound #GstTriggerControlSource.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new, unbound #GstTriggerControlSource.</doc>
          <type name="Gst.ControlSource" c:type="GstControlSource*"/>
        </return-value>
      </constructor>
      <property name="tolerance" writable="1" transfer-ownership="none">
        <type name="gint64" c:type="gint64"/>
      </property>
      <field name="parent">
        <type name="TimedValueControlSource"
              c:type="GstTimedValueControlSource"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="TriggerControlSourcePrivate"
              c:type="GstTriggerControlSourcePrivate*"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="TriggerControlSourceClass"
            c:type="GstTriggerControlSourceClass"
            glib:is-gtype-struct-for="TriggerControlSource">
      <field name="parent_class">
        <type name="TimedValueControlSourceClass"
              c:type="GstTimedValueControlSourceClass"/>
      </field>
      <field name="_gst_reserved" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="TriggerControlSourcePrivate"
            c:type="GstTriggerControlSourcePrivate"
            disguised="1">
    </record>
    <function name="timed_value_control_invalidate_cache"
              c:identifier="gst_timed_value_control_invalidate_cache">
      <doc xml:space="preserve">Reset the controlled value cache.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve">the #GstTimedValueControlSource</doc>
          <type name="TimedValueControlSource"
                c:type="GstTimedValueControlSource*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
