]> gitweb.factorcode.org Git - factor.git/commitdiff
rename gst -> gstreamer
authorAnton Gorenko <ex.rzrjck@gmail.com>
Sun, 18 Jul 2010 05:44:49 +0000 (11:44 +0600)
committerAnton Gorenko <ex.rzrjck@gmail.com>
Sun, 18 Jul 2010 05:44:49 +0000 (11:44 +0600)
13 files changed:
basis/gst/Gst-0.10.gir [deleted file]
basis/gst/authors.txt [deleted file]
basis/gst/ffi/ffi.factor [deleted file]
basis/gst/gst.factor [deleted file]
basis/gst/summary.txt [deleted file]
basis/gst/tags.txt [deleted file]
basis/gstreamer/Gst-0.10.gir [new file with mode: 0644]
basis/gstreamer/authors.txt [new file with mode: 0644]
basis/gstreamer/ffi/ffi.factor [new file with mode: 0644]
basis/gstreamer/gstreamer.factor [new file with mode: 0644]
basis/gstreamer/summary.txt [new file with mode: 0644]
basis/gstreamer/tags.txt [new file with mode: 0755]
extra/gir/samples/lowlevel/gstreamer/gstreamer.factor

diff --git a/basis/gst/Gst-0.10.gir b/basis/gst/Gst-0.10.gir
deleted file mode 100644 (file)
index d187fe1..0000000
+++ /dev/null
@@ -1,22063 +0,0 @@
-<?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.0"
-            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="GLib" version="2.0"/>
-  <include name="GModule" version="2.0"/>
-  <include name="GObject" version="2.0"/>
-  <include name="libxml2" version="2.0"/>
-  <package name="glib-2.0"/>
-  <package name="gmodule-no-export-2.0"/>
-  <package name="gobject-2.0"/>
-  <package name="gthread-2.0"/>
-  <package name="libxml-2.0"/>
-  <c:include name="gst/gst.h"/>
-  <namespace name="Gst"
-             version="0.10"
-             shared-library="libgstreamer-0.10.so.0"
-             c:prefix="Gst">
-    <alias name="ClockID" target="any" c:type="GstClockID"/>
-    <alias name="ClockTime" target="uint64" c:type="GstClockTime"/>
-    <alias name="ClockTimeDiff" target="int64" c:type="GstClockTimeDiff"/>
-    <enumeration name="ActivateMode"
-                 doc="The status of a GstPad. After activating a pad, which usually happens when the
-parent element goes from READY to PAUSED, the GstActivateMode defines if the
-pad operates in push or pull mode."
-                 c:type="GstActivateMode">
-      <member name="none" value="0" c:identifier="GST_ACTIVATE_NONE"/>
-      <member name="push" value="1" c:identifier="GST_ACTIVATE_PUSH"/>
-      <member name="pull" value="2" c:identifier="GST_ACTIVATE_PULL"/>
-    </enumeration>
-    <record name="AllocTrace"
-            c:type="GstAllocTrace"
-            doc="The main tracing object">
-      <field name="name" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="flags" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="live" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="mem_live" writable="1">
-        <type name="GLib.SList" c:type="GSList*"/>
-      </field>
-      <method name="print"
-              c:identifier="gst_alloc_trace_print"
-              doc="Print the status of the given GstAllocTrace.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="set_flags"
-              c:identifier="gst_alloc_trace_set_flags"
-              doc="Enable the given features on the given GstAllocTrace object.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="AllocTraceFlags" c:type="GstAllocTraceFlags"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <bitfield name="AllocTraceFlags"
-              doc="Flags indicating which tracing feature to enable."
-              c:type="GstAllocTraceFlags">
-      <member name="live" value="1" c:identifier="GST_ALLOC_TRACE_LIVE"/>
-      <member name="mem_live"
-              value="2"
-              c:identifier="GST_ALLOC_TRACE_MEM_LIVE"/>
-    </bitfield>
-    <bitfield name="AssocFlags"
-              doc="that marks a place where one can randomly seek to.
-is one that marks a place where one can relatively seek to.
-Flags for an association entry."
-              c:type="GstAssocFlags">
-      <member name="none" value="0" c:identifier="GST_ASSOCIATION_FLAG_NONE"/>
-      <member name="key_unit"
-              value="1"
-              c:identifier="GST_ASSOCIATION_FLAG_KEY_UNIT"/>
-      <member name="delta_unit"
-              value="2"
-              c:identifier="GST_ASSOCIATION_FLAG_DELTA_UNIT"/>
-      <member name="last"
-              value="256"
-              c:identifier="GST_ASSOCIATION_FLAG_LAST"/>
-    </bitfield>
-    <constant name="BUFFER_COPY_ALL" value="0">
-      <type name="int"/>
-    </constant>
-    <constant name="BUFFER_OFFSET_NONE" value="-1">
-      <type name="int"/>
-    </constant>
-    <constant name="BUFFER_TRACE_NAME" value="GstBuffer">
-      <type name="utf8"/>
-    </constant>
-    <class name="Bin"
-           c:type="GstBin"
-           doc="The GstBin base class. Subclasses can access these fields provided
-the LOCK is taken."
-           parent="Element"
-           glib:type-name="GstBin"
-           glib:get-type="gst_bin_get_type"
-           glib:type-struct="BinClass">
-      <implements name="ChildProxy"/>
-      <constructor name="new"
-                   c:identifier="gst_bin_new"
-                   doc="Creates a new bin with the given name.">
-        <return-value transfer-ownership="full">
-          <type name="Bin" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <virtual-method name="add_element">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="remove_element">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="handle_message">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="add"
-              c:identifier="gst_bin_add"
-              doc="Adds the given element to the bin.  Sets the element&apos;s parent, and thus
-takes ownership of the element. An element can only be added to one bin.
-If the element&apos;s pads are linked to other pads, the pads will be unlinked
-before the element is added to the bin.
-MT safe.
-the bin does not want to accept the element.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove"
-              c:identifier="gst_bin_remove"
-              doc="Removes the element from the bin, unparenting it as well.
-Unparenting the element means that the element will be dereferenced,
-so if the bin holds the only reference to the element, the element
-will be freed in the process of removing it from the bin.  If you
-want the element to still exist after removing, you need to call
-gst_object_ref() before removing it from the bin.
-If the element&apos;s pads are linked to other pads, the pads will be unlinked
-before the element is removed from the bin.
-MT safe.
-the bin does not want to remove the element.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_by_name"
-              c:identifier="gst_bin_get_by_name"
-              doc="Gets the element with the given name from a bin. This
-function recurses into child bins.
-Returns NULL if no element with the given name is found in the bin.
-MT safe.  Caller owns returned reference.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_by_name_recurse_up"
-              c:identifier="gst_bin_get_by_name_recurse_up"
-              doc="Gets the element with the given name from this bin. If the
-element is not found, a recursion is performed on the parent bin.
-Returns NULL if:
-- no element with the given name is found in the bin
-MT safe.  Caller owns returned reference.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_by_interface"
-              c:identifier="gst_bin_get_by_interface"
-              doc="Looks for an element inside the bin that implements the given
-interface. If such an element is found, it returns the element.
-You can cast this element to the given interface afterwards.  If you want
-all elements that implement the interface, use
-gst_bin_iterate_all_by_interface(). This function recurses into child bins.
-MT safe.  Caller owns returned reference.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="iface" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="iterate_elements"
-              c:identifier="gst_bin_iterate_elements"
-              doc="Gets an iterator for the elements in this bin.
-Each element yielded by the iterator will have its refcount increased, so
-unref after use.
-MT safe.  Caller owns returned value.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_sorted"
-              c:identifier="gst_bin_iterate_sorted"
-              doc="Gets an iterator for the elements in this bin in topologically
-sorted order. This means that the elements are returned from
-the most downstream elements (sinks) to the sources.
-This function is used internally to perform the state changes
-of the bin elements and for clock selection.
-Each element yielded by the iterator will have its refcount increased, so
-unref after use.
-MT safe.  Caller owns returned value.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_recurse"
-              c:identifier="gst_bin_iterate_recurse"
-              doc="Gets an iterator for the elements in this bin.
-This iterator recurses into GstBin children.
-Each element yielded by the iterator will have its refcount increased, so
-unref after use.
-MT safe.  Caller owns returned value.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_sinks"
-              c:identifier="gst_bin_iterate_sinks"
-              doc="Gets an iterator for all elements in the bin that have the
-#GST_ELEMENT_IS_SINK flag set.
-Each element yielded by the iterator will have its refcount increased, so
-unref after use.
-MT safe.  Caller owns returned value.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_sources"
-              c:identifier="gst_bin_iterate_sources"
-              doc="Gets an iterator for all elements in the bin that have no sinkpads and have
-the #GST_ELEMENT_IS_SINK flag unset.
-Each element yielded by the iterator will have its refcount increased, so
-unref after use.
-MT safe.  Caller owns returned value.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_all_by_interface"
-              c:identifier="gst_bin_iterate_all_by_interface"
-              doc="Looks for all elements inside the bin that implements the given
-interface. You can safely cast all returned elements to the given interface.
-The function recurses inside child bins. The iterator will yield a series
-of #GstElement that should be unreffed after use.
-Each element yielded by the iterator will have its refcount increased, so
-unref after use.
-MT safe.  Caller owns returned value.
-implementing the given interface, or NULL">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-        <parameters>
-          <parameter name="iface" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="recalculate_latency"
-              c:identifier="gst_bin_recalculate_latency"
-              doc="Query @bin for the current latency using and reconfigures this latency to all the
-elements with a LATENCY event.
-This method is typically called on the pipeline when a #GST_MESSAGE_LATENCY
-is posted on the bus.
-This function simply emits the &apos;do-latency&apos; signal so any custom latency
-calculations will be performed."
-              version="0.10.22.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="add_many"
-              c:identifier="gst_bin_add_many"
-              doc="Adds a NULL-terminated list of elements to a bin.  This function is
-equivalent to calling gst_bin_add() for each member of the list. The return
-value of each gst_bin_add() is ignored.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="element_1" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_many"
-              c:identifier="gst_bin_remove_many"
-              doc="Remove a list of elements from a bin. This function is equivalent
-to calling gst_bin_remove() with each member of the list.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="element_1" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="find_unlinked_pad"
-              c:identifier="gst_bin_find_unlinked_pad"
-              doc="Recursively looks for elements with an unlinked pad of the given
-direction within the specified bin and returns an unlinked pad
-if one is found, or NULL otherwise. If a pad is found, the caller
-owns a reference to it and should use gst_object_unref() on the
-pad when it is not needed any longer."
-              version="0.10.20">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="direction" transfer-ownership="none">
-            <type name="PadDirection" c:type="GstPadDirection"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="find_unconnected_pad"
-              c:identifier="gst_bin_find_unconnected_pad"
-              doc="Recursively looks for elements with an unlinked pad of the given
-direction within the specified bin and returns an unlinked pad
-if one is found, or NULL otherwise. If a pad is found, the caller
-owns a reference to it and should use gst_object_unref() on the
-pad when it is not needed any longer."
-              version="0.10.3"
-              deprecated="use gst_bin_find_unlinked_pad() instead.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="direction" transfer-ownership="none">
-            <type name="PadDirection" c:type="GstPadDirection"/>
-          </parameter>
-        </parameters>
-      </method>
-      <property name="async-handling" writable="1">
-        <type name="boolean" c:type="gboolean"/>
-      </property>
-      <field name="element">
-        <type name="Element" c:type="GstElement"/>
-      </field>
-      <field name="numchildren">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="children">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="children_cookie">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="child_bus">
-        <type name="Bus" c:type="GstBus*"/>
-      </field>
-      <field name="messages">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="polling">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="state_dirty">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="clock_dirty">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="provided_clock">
-        <type name="Clock" c:type="GstClock*"/>
-      </field>
-      <field name="clock_provider">
-        <type name="Element" c:type="GstElement*"/>
-      </field>
-      <field name="priv">
-        <type name="BinPrivate" c:type="GstBinPrivate*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-      <glib:signal name="do-latency"
-                   doc="Will be emitted when the bin needs to perform latency calculations. This
-signal is only emited for toplevel bins or when async-handling is
-enabled.
-Only one signal handler is invoked. If no signals are connected, the
-default handler is invoked, which will query and distribute the lowest
-possible latency to all sinks.
-Connect to this signal if the default latency calculations are not
-sufficient, like when you need different latencies for different sinks in
-the same pipeline."
-                   version="0.10.22">
-        <return-value transfer-ownership="full">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </glib:signal>
-      <glib:signal name="element-added"
-                   doc="Will be emitted after the element was added to the bin.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="element-removed"
-                   doc="Will be emitted after the element was removed from the bin.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="BinClass"
-            c:type="GstBinClass"
-            glib:is-gtype-struct-for="Bin"
-            doc="Subclasses can override the @add_element and @remove_element to
-update the list of children in the bin.
-The @handle_message method can be overridden to implement custom
-message handling.  @handle_message takes ownership of the message, just like
-#gst_element_post_message.">
-      <field name="parent_class">
-        <type name="ElementClass" c:type="GstElementClass"/>
-      </field>
-      <field name="pool">
-        <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
-      </field>
-      <field name="element_added">
-        <callback name="element_added" c:type="element_added">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="bin" transfer-ownership="none">
-              <type name="Bin" c:type="GstBin*"/>
-            </parameter>
-            <parameter name="child" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="element_removed">
-        <callback name="element_removed" c:type="element_removed">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="bin" transfer-ownership="none">
-              <type name="Bin" c:type="GstBin*"/>
-            </parameter>
-            <parameter name="child" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="add_element">
-        <callback name="add_element" c:type="add_element">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="bin" transfer-ownership="none">
-              <type name="Bin" c:type="GstBin*"/>
-            </parameter>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="remove_element">
-        <callback name="remove_element" c:type="remove_element">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="bin" transfer-ownership="none">
-              <type name="Bin" c:type="GstBin*"/>
-            </parameter>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="handle_message">
-        <callback name="handle_message" c:type="handle_message">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="bin" transfer-ownership="none">
-              <type name="Bin" c:type="GstBin*"/>
-            </parameter>
-            <parameter name="message" transfer-ownership="none">
-              <type name="Message" c:type="GstMessage*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="do_latency">
-        <callback name="do_latency" c:type="do_latency">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="bin" transfer-ownership="none">
-              <type name="Bin" c:type="GstBin*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="BinFlags"
-              doc="Derived classes can use this as first value in a list of flags.
-GstBinFlags are a set of flags specific to bins. Most are set/used
-internally. They can be checked using the GST_OBJECT_FLAG_IS_SET () macro,
-and (un)set using GST_OBJECT_FLAG_SET () and GST_OBJECT_FLAG_UNSET ()."
-              c:type="GstBinFlags">
-      <member name="bin_flag_last"
-              value="33554432"
-              c:identifier="GST_BIN_FLAG_LAST"/>
-    </bitfield>
-    <record name="BinPrivate" c:type="GstBinPrivate">
-    </record>
-    <record name="Buffer"
-            c:type="GstBuffer"
-            doc="timestamp is not known or relevant.
-when the duration is not known or relevant.
-For video frames, this is the frame number of this buffer.
-For audio samples, this is the offset of the first sample in this buffer.
-For file data or compressed data this is the byte offset of the first
-byte in this buffer.
-format as @offset.
-When the buffer is freed, this data will freed with @free_func.
-to g_free(). Since 0.10.22.
-The structure of a #GstBuffer. Use the associated macros to access the public
-variables.">
-      <field name="mini_object" writable="1">
-        <type name="MiniObject" c:type="GstMiniObject"/>
-      </field>
-      <field name="data" writable="1">
-        <type name="any" c:type="guint8*"/>
-      </field>
-      <field name="size" writable="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="timestamp" writable="1">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="duration" writable="1">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="caps" writable="1">
-        <type name="Caps" c:type="GstCaps*"/>
-      </field>
-      <field name="offset" writable="1">
-        <type name="uint64" c:type="guint64"/>
-      </field>
-      <field name="offset_end" writable="1">
-        <type name="uint64" c:type="guint64"/>
-      </field>
-      <field name="malloc_data" writable="1">
-        <type name="any" c:type="guint8*"/>
-      </field>
-      <field name="free_func" writable="1">
-        <type name="GLib.FreeFunc" c:type="GFreeFunc"/>
-      </field>
-      <field name="parent" writable="1">
-        <type name="Buffer" c:type="GstBuffer*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
-          <type name="any"/>
-        </array>
-      </field>
-      <constructor name="new"
-                   c:identifier="gst_buffer_new"
-                   doc="Creates a newly allocated buffer without any data.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_and_alloc"
-                   c:identifier="gst_buffer_new_and_alloc"
-                   doc="Creates a newly allocated buffer with data of the given size.
-The buffer memory is not cleared. If the requested amount of
-memory can&apos;t be allocated, the program will abort. Use
-gst_buffer_try_new_and_alloc() if you want to handle this case
-gracefully or have gotten the size to allocate from an untrusted
-source such as a media stream.
-Note that when @size == 0, the buffer data pointer will be NULL.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="copy_metadata"
-              c:identifier="gst_buffer_copy_metadata"
-              doc="Copies the metadata from @src into @dest. The data, size and mallocdata
-fields are not copied.
-all the metadata fields.
-This function is typically called from a custom buffer copy function after
-creating @dest and setting the data, size, mallocdata."
-              version="0.10.13">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="BufferCopyFlags" c:type="GstBufferCopyFlags"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_metadata_writable"
-              c:identifier="gst_buffer_is_metadata_writable"
-              doc="Similar to gst_buffer_is_writable, but this only ensures that the
-refcount of the buffer is 1, indicating that the caller is the sole
-owner and can change the buffer metadata, such as caps and timestamps.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="make_metadata_writable"
-              c:identifier="gst_buffer_make_metadata_writable"
-              doc="Similar to gst_buffer_make_writable, but does not ensure that the buffer
-data array is writable. Instead, this just ensures that the returned buffer
-is solely owned by the caller, by creating a subbuffer of the original
-buffer if necessary.
-After calling this function, @buf should not be referenced anymore. The
-result of this function has guaranteed writable metadata.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-      </method>
-      <method name="get_caps"
-              c:identifier="gst_buffer_get_caps"
-              doc="Gets the media type of the buffer. This can be NULL if there
-is no media type attached to this buffer.
-Returns NULL if there were no caps on this buffer.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="set_caps"
-              c:identifier="gst_buffer_set_caps"
-              doc="Sets the media type on the buffer. The refcount of the caps will
-be increased and any previous caps on the buffer will be
-unreffed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="create_sub"
-              c:identifier="gst_buffer_create_sub"
-              doc="begins.
-Creates a sub-buffer from @parent at @offset and @size.
-This sub-buffer uses the actual memory space of the parent buffer.
-This function will copy the offset and timestamp fields when the
-offset is 0. If not, they will be set to #GST_CLOCK_TIME_NONE and
-#GST_BUFFER_OFFSET_NONE.
-If @offset equals 0 and @size equals the total size of @buffer, the
-duration and offset end fields are also copied. If not they will be set
-to #GST_CLOCK_TIME_NONE and #GST_BUFFER_OFFSET_NONE.
-MT safe.
-Returns NULL if the arguments were invalid.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_span_fast"
-              c:identifier="gst_buffer_is_span_fast"
-              doc="Determines whether a gst_buffer_span() can be done without copying
-the contents, that is, whether the data areas are contiguous sub-buffers of
-the same buffer.
-MT safe.
-FALSE if a copy would be required.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="buf2" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="span"
-              c:identifier="gst_buffer_span"
-              doc="buffer should start.
-Creates a new buffer that consists of part of buf1 and buf2.
-Logically, buf1 and buf2 are concatenated into a single larger
-buffer, and a new buffer is created at the given offset inside
-this space, with a given length.
-If the two source buffers are children of the same larger buffer,
-and are contiguous, the new buffer will be a child of the shared
-parent, and thus no copying is necessary. you can use
-gst_buffer_is_span_fast() to determine if a memcpy will be needed.
-MT safe.
-Returns NULL if the arguments are invalid.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="uint32" c:type="guint32"/>
-          </parameter>
-          <parameter name="buf2" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-          <parameter name="len" transfer-ownership="none">
-            <type name="uint32" c:type="guint32"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="merge"
-              c:identifier="gst_buffer_merge"
-              doc="Create a new buffer that is the concatenation of the two source
-buffers.  The original source buffers will not be modified or
-unref&apos;d.  Make sure you unref the source buffers if they are not used
-anymore afterwards.
-If the buffers point to contiguous areas of memory, the buffer
-is created without copying the data.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="buf2" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="join"
-              c:identifier="gst_buffer_join"
-              doc="Create a new buffer that is the concatenation of the two source
-buffers, and unrefs the original source buffers.
-If the buffers point to contiguous areas of memory, the buffer
-is created without copying the data.
-This is a convenience function for C programmers. See also
-gst_buffer_merge(), which does the same thing without
-unreffing the input parameters. Language bindings without
-explicit reference counting should not wrap this function.">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="buf2" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="stamp"
-              c:identifier="gst_buffer_stamp"
-              doc="Copies additional information (the timestamp, duration, and offset start
-and end) from one buffer to the other.
-This function does not copy any buffer flags or caps and is equivalent to
-gst_buffer_copy_metadata(@dest, @src, GST_BUFFER_COPY_TIMESTAMPS).
-control."
-              deprecated="use gst_buffer_copy_metadata() instead, it provides more">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="BufferClass" c:type="GstBufferClass">
-      <field name="mini_object_class" writable="1">
-        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
-      </field>
-    </record>
-    <bitfield name="BufferCopyFlags"
-              doc="offset and offset_end should be copied
-A set of flags that can be provided to the gst_buffer_copy_metadata()
-function to specify which metadata fields should be copied."
-              version="0.10.13"
-              c:type="GstBufferCopyFlags">
-      <member name="flags" value="1" c:identifier="GST_BUFFER_COPY_FLAGS"/>
-      <member name="timestamps"
-              value="2"
-              c:identifier="GST_BUFFER_COPY_TIMESTAMPS"/>
-      <member name="caps" value="4" c:identifier="GST_BUFFER_COPY_CAPS"/>
-    </bitfield>
-    <bitfield name="BufferFlag"
-              doc="the buffer should not be modified. The metadata might still be modified.
-displayed.
-This typically occurs after a seek or a dropped buffer from a live or
-network source.
-stream and contains media neutral data (elements can switch to optimized code
-path that ignores the buffer content).
-A set of buffer flags used to describe properties of a #GstBuffer."
-              c:type="GstBufferFlag">
-      <member name="readonly"
-              value="1"
-              c:identifier="GST_BUFFER_FLAG_READONLY"/>
-      <member name="preroll"
-              value="16"
-              c:identifier="GST_BUFFER_FLAG_PREROLL"/>
-      <member name="discont"
-              value="32"
-              c:identifier="GST_BUFFER_FLAG_DISCONT"/>
-      <member name="in_caps"
-              value="64"
-              c:identifier="GST_BUFFER_FLAG_IN_CAPS"/>
-      <member name="gap" value="128" c:identifier="GST_BUFFER_FLAG_GAP"/>
-      <member name="delta_unit"
-              value="256"
-              c:identifier="GST_BUFFER_FLAG_DELTA_UNIT"/>
-      <member name="media1" value="512" c:identifier="GST_BUFFER_FLAG_MEDIA1"/>
-      <member name="media2"
-              value="1024"
-              c:identifier="GST_BUFFER_FLAG_MEDIA2"/>
-      <member name="media3"
-              value="2048"
-              c:identifier="GST_BUFFER_FLAG_MEDIA3"/>
-      <member name="last" value="4096" c:identifier="GST_BUFFER_FLAG_LAST"/>
-    </bitfield>
-    <record name="BufferList"
-            c:type="GstBufferList"
-            doc="Opaque list of grouped buffers."
-            version="0.10.24">
-      <constructor name="new"
-                   c:identifier="gst_buffer_list_new"
-                   doc="Creates a new, empty #GstBufferList. The caller is responsible for unreffing
-the returned #GstBufferList."
-                   version="0.10.24">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <type name="BufferList" c:type="GstBufferList*"/>
-        </return-value>
-      </constructor>
-      <method name="n_groups"
-              c:identifier="gst_buffer_list_n_groups"
-              doc="Returns the number of groups in @list."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="foreach"
-              c:identifier="gst_buffer_list_foreach"
-              doc="Call @func with @data for each buffer in @list.
-of @func define if this function returns or if the remaining buffers in a
-group should be skipped."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="BufferListFunc" c:type="GstBufferListFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get"
-              c:identifier="gst_buffer_list_get"
-              doc="Get the buffer at @idx in @group.
-Note that this function is not efficient for iterating over the entire list.
-Use an iterator or gst_buffer_list_foreach() instead.
-buffer remains valid as long as @list is valid."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="group" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="idx" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="iterate"
-              c:identifier="gst_buffer_list_iterate"
-              doc="Iterate the buffers in @list. The owner of the iterator must also be the
-owner of a reference to @list while the returned iterator is in use.
-gst_buffer_list_iterator_free() after usage"
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="BufferListIterator" c:type="GstBufferListIterator*"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="BufferListClass" c:type="GstBufferListClass">
-    </record>
-    <callback name="BufferListDoFunction"
-              c:type="GstBufferListDoFunction"
-              doc="A function for accessing the last buffer returned by
-gst_buffer_list_iterator_next(). The function can leave @buffer in the list,
-replace @buffer in the list or remove @buffer from the list, depending on
-the return value. If the function returns NULL, @buffer will be removed from
-the list, otherwise @buffer will be replaced with the returned buffer.
-The last buffer returned by gst_buffer_list_iterator_next() will be replaced
-with the buffer returned from the function. The function takes ownership of
-unreffed. If NULL is returned, the buffer will be removed from the list. The
-list must be writable.
-from the list"
-              version="0.10.24">
-      <return-value transfer-ownership="full">
-        <type name="Buffer" c:type="GstBuffer*"/>
-      </return-value>
-      <parameters>
-        <parameter name="buffer" transfer-ownership="none">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="BufferListFunc"
-              c:type="GstBufferListFunc"
-              doc="A function that will be called from gst_buffer_list_foreach(). The @buffer
-field will point to a the reference of the buffer at @idx in @group.
-When this function returns #GST_BUFFER_LIST_CONTINUE, the next buffer will be
-returned. When #GST_BUFFER_LIST_SKIP_GROUP is returned, all remaining buffers
-in the current group will be skipped and the first buffer of the next group
-is returned (if any). When GST_BUFFER_LIST_END is returned,
-gst_buffer_list_foreach() will return.
-When @buffer is set to NULL, the item will be removed from the bufferlist.
-When @buffer has been made writable, the new buffer reference can be assigned
-to @buffer. This function is responsible for unreffing the old buffer when
-removing or modifying."
-              version="0.10.24">
-      <return-value transfer-ownership="full">
-        <type name="BufferListItem" c:type="GstBufferListItem"/>
-      </return-value>
-      <parameters>
-        <parameter name="buffer" transfer-ownership="none">
-          <type name="Buffer" c:type="GstBuffer**"/>
-        </parameter>
-        <parameter name="group" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="idx" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="3">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="BufferListItem"
-                 doc="The result of the #GstBufferListFunc."
-                 version="0.10.24"
-                 c:type="GstBufferListItem">
-      <member name="continue"
-              value="0"
-              c:identifier="GST_BUFFER_LIST_CONTINUE"/>
-      <member name="skip_group"
-              value="1"
-              c:identifier="GST_BUFFER_LIST_SKIP_GROUP"/>
-      <member name="end" value="2" c:identifier="GST_BUFFER_LIST_END"/>
-    </enumeration>
-    <record name="BufferListIterator"
-            c:type="GstBufferListIterator"
-            doc="Opaque iterator for a #GstBufferList."
-            version="0.10.24">
-      <method name="free"
-              c:identifier="gst_buffer_list_iterator_free"
-              doc="Free the iterator."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="n_buffers"
-              c:identifier="gst_buffer_list_iterator_n_buffers"
-              doc="Returns the number of buffers left to iterate in the current group. I.e. the
-number of calls that can be made to gst_buffer_list_iterator_next() before
-it returns NULL.
-This function will not move the implicit cursor or in any other way affect
-the state of the iterator @it."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="next"
-              c:identifier="gst_buffer_list_iterator_next"
-              doc="Returns the next buffer in the list iterated with @it. If the iterator is at
-the end of a group, NULL will be returned. This function may be called
-repeatedly to iterate through the current group.
-The caller will not get a new ref to the returned #GstBuffer and must not
-unref it."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-      </method>
-      <method name="next_group"
-              c:identifier="gst_buffer_list_iterator_next_group"
-              doc="Advance the iterator @it to the first buffer in the next group. If the
-iterator is at the last group, FALSE will be returned. This function may be
-called repeatedly to iterate through the groups in a buffer list.
-the iterator was already at the last group"
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="add"
-              c:identifier="gst_buffer_list_iterator_add"
-              doc="Inserts @buffer into the #GstBufferList iterated with @it. The buffer is
-inserted into the current group, immediately before the buffer that would be
-returned by gst_buffer_list_iterator_next(). The buffer is inserted before
-the implicit cursor, a subsequent call to gst_buffer_list_iterator_next()
-will return the buffer after the inserted buffer, if any.
-This function takes ownership of @buffer."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="buffer" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_group"
-              c:identifier="gst_buffer_list_iterator_add_group"
-              doc="Inserts a new, empty group into the #GstBufferList iterated with @it. The
-group is inserted immediately before the group that would be returned by
-gst_buffer_list_iterator_next_group(). A subsequent call to
-gst_buffer_list_iterator_next_group() will advance the iterator to the group
-after the inserted group, if any."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="remove"
-              c:identifier="gst_buffer_list_iterator_remove"
-              doc="Removes the last buffer returned by gst_buffer_list_iterator_next() from
-the #GstBufferList iterated with @it. gst_buffer_list_iterator_next() must
-have been called on @it before this function is called. This function can
-only be called once per call to gst_buffer_list_iterator_next().
-The removed buffer is unreffed."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="steal"
-              c:identifier="gst_buffer_list_iterator_steal"
-              doc="Returns the last buffer returned by gst_buffer_list_iterator_next() without
-modifying the refcount of the buffer."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-      </method>
-      <method name="take"
-              c:identifier="gst_buffer_list_iterator_take"
-              doc="Replaces the last buffer returned by gst_buffer_list_iterator_next() with
-this function is called. gst_buffer_list_iterator_remove() must not have been
-called since the last call to gst_buffer_list_iterator_next().
-This function unrefs the replaced buffer if it has not been stolen with
-gst_buffer_list_iterator_steal() and takes ownership of @buffer (i.e. the
-refcount of @buffer is not increased)."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="buffer" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="do"
-              c:identifier="gst_buffer_list_iterator_do"
-              doc="Calls the given function for the last buffer returned by
-gst_buffer_list_iterator_next(). gst_buffer_list_iterator_next() must have
-been called on @it before this function is called.
-gst_buffer_list_iterator_remove() and gst_buffer_list_iterator_steal() must
-not have been called since the last call to gst_buffer_list_iterator_next().
-See #GstBufferListDoFunction for more details."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-        <parameters>
-          <parameter name="do_func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="BufferListDoFunction"
-                  c:type="GstBufferListDoFunction"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="merge_group"
-              c:identifier="gst_buffer_list_iterator_merge_group"
-              doc="Merge a buffer list group into a normal #GstBuffer by copying its metadata
-and memcpying its data into consecutive memory. All buffers in the current
-group after the implicit cursor will be merged into one new buffer. The
-metadata of the new buffer will be a copy of the metadata of the buffer that
-would be returned by gst_buffer_list_iterator_next(). If there is no buffer
-in the current group after the implicit cursor, NULL will be returned.
-This function will not move the implicit cursor or in any other way affect
-the state of the iterator @it or the list."
-              version="0.10.24">
-        <return-value transfer-ownership="full" doc="after usage, or NULL">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </return-value>
-      </method>
-    </record>
-    <enumeration name="BufferingMode"
-                 doc="The different types of buffering methods."
-                 c:type="GstBufferingMode">
-      <member name="stream" value="0" c:identifier="GST_BUFFERING_STREAM"/>
-      <member name="download" value="1" c:identifier="GST_BUFFERING_DOWNLOAD"/>
-      <member name="timeshift"
-              value="2"
-              c:identifier="GST_BUFFERING_TIMESHIFT"/>
-      <member name="live" value="3" c:identifier="GST_BUFFERING_LIVE"/>
-    </enumeration>
-    <class name="Bus"
-           c:type="GstBus"
-           doc="The opaque #GstBus data structure."
-           parent="Object"
-           glib:type-name="GstBus"
-           glib:get-type="gst_bus_get_type"
-           glib:type-struct="BusClass">
-      <constructor name="new"
-                   c:identifier="gst_bus_new"
-                   doc="Creates a new #GstBus instance.">
-        <return-value transfer-ownership="full">
-          <type name="Bus" c:type="GstBus*"/>
-        </return-value>
-      </constructor>
-      <method name="post"
-              c:identifier="gst_bus_post"
-              doc="Post a message on the given bus. Ownership of the message
-is taken by the bus.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="have_pending"
-              c:identifier="gst_bus_have_pending"
-              doc="Check if there are pending messages on the bus that
-should be handled.
-otherwise.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="peek"
-              c:identifier="gst_bus_peek"
-              doc="Peek the message on the top of the bus&apos; queue. The message will remain
-on the bus&apos; message queue. A reference is returned, and needs to be unreffed
-by the caller.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-      </method>
-      <method name="pop"
-              c:identifier="gst_bus_pop"
-              doc="Get a message from the bus.
-The message is taken from the bus and needs to be unreffed with
-gst_message_unref() after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-      </method>
-      <method name="pop_filtered"
-              c:identifier="gst_bus_pop_filtered"
-              doc="Get a message matching @type from the bus.  Will discard all messages on
-the bus that do not match @type and that have been posted before the first
-message that does match @type.  If there is no message matching @type on
-the bus, all messages will be discarded.
-the bus is empty or there is no message matching @type.
-The message is taken from the bus and needs to be unreffed with
-gst_message_unref() after usage.
-MT safe."
-              version="0.10.15">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="types" transfer-ownership="none">
-            <type name="MessageType" c:type="GstMessageType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="timed_pop"
-              c:identifier="gst_bus_timed_pop"
-              doc="Get a message from the bus, waiting up to the specified timeout.
-If @timeout is 0, this function behaves like gst_bus_pop(). If @timeout is
-#GST_CLOCK_TIME_NONE, this function will block forever until a message was
-posted on the bus.
-or NULL if the bus is empty after the timeout expired.
-The message is taken from the bus and needs to be unreffed with
-gst_message_unref() after usage.
-MT safe."
-              version="0.10.12">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="timeout" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="timed_pop_filtered"
-              c:identifier="gst_bus_timed_pop_filtered"
-              doc="Get a message from the bus whose type matches the message type mask @types,
-waiting up to the specified timeout (and discarding any messages that do not
-match the mask provided).
-If @timeout is 0, this function behaves like gst_bus_pop_filtered(). If
-matching message was posted on the bus.
-message was found on the bus until the timeout expired.
-The message is taken from the bus and needs to be unreffed with
-gst_message_unref() after usage.
-MT safe."
-              version="0.10.15">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="timeout" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="types" transfer-ownership="none">
-            <type name="MessageType" c:type="GstMessageType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_flushing"
-              c:identifier="gst_bus_set_flushing"
-              doc="If @flushing, flush out and unref any messages queued in the bus. Releases
-references to the message origin objects. Will flush future messages until
-gst_bus_set_flushing() sets @flushing to #FALSE.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="flushing" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_sync_handler"
-              c:identifier="gst_bus_set_sync_handler"
-              doc="Sets the synchronous handler on the bus. The function will be called
-every time a new message is posted on the bus. Note that the function
-will be called in the same thread context as the posting object. This
-function is usually only called by the creator of the bus. Applications
-should handle messages asynchronously using the gst_bus watch and poll
-functions.
-You cannot replace an existing sync_handler. You can pass NULL to this
-function, which will clear the existing handler.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="create_watch"
-              c:identifier="gst_bus_create_watch"
-              doc="Create watch for this bus. The GSource will be dispatched whenever
-a message is on the bus. After the GSource is dispatched, the
-message is popped off the bus and unreffed.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.Source" c:type="GSource*"/>
-        </return-value>
-      </method>
-      <method name="add_watch_full"
-              c:identifier="gst_bus_add_watch_full"
-              doc="Adds a bus watch to the default main context with the given @priority.
-This function is used to receive asynchronous messages in the main loop.
-There can only be a single bus watch per bus, you must remove it before you
-can set a new one.
-When @func is called, the message belongs to the caller; if you want to
-keep a copy of it, call gst_message_ref() before leaving @func.
-The watch can be removed using g_source_remove() or by returning FALSE
-from @func.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-        <parameters>
-          <parameter name="priority" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="3"
-                     destroy="4">
-            <type name="BusFunc" c:type="GstBusFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="notify" transfer-ownership="none" scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_watch"
-              c:identifier="gst_bus_add_watch"
-              doc="Adds a bus watch to the default main context with the default priority.
-This function is used to receive asynchronous messages in the main loop.
-There can only be a single bus watch per bus, you must remove it before you
-can set a new one.
-The watch can be removed using g_source_remove() or by returning FALSE
-from @func.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="BusFunc" c:type="GstBusFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="poll"
-              c:identifier="gst_bus_poll"
-              doc="poll for.
-indefinitely.
-Poll the bus for messages. Will block while waiting for messages to come.
-You can specify a maximum time to poll with the @timeout parameter. If
-All messages not in @events will be popped off the bus and will be ignored.
-Because poll is implemented using the &quot;message&quot; signal enabled by
-gst_bus_add_signal_watch(), calling gst_bus_poll() will cause the &quot;message&quot;
-signal to be emitted for every message that poll sees. Thus a &quot;message&quot;
-signal handler will see the same messages that this function sees -- neither
-will steal messages from the other.
-This function will run a main loop from the default main context when
-polling.
-You should never use this function, since it is pure evil. This is
-especially true for GUI applications based on Gtk+ or Qt, but also for any
-other non-trivial application that uses the GLib main loop. As this function
-runs a GLib main loop, any callback attached to the default GLib main
-context may be invoked. This could be timeouts, GUI events, I/O events etc.;
-even if gst_bus_poll() is called with a 0 timeout. Any of these callbacks
-may do things you do not expect, e.g. destroy the main application window or
-some other resource; change other application state; display a dialog and
-run another main loop until the user clicks it away. In short, using this
-function may add a lot of complexity to your code through unexpected
-re-entrancy and unexpected changes to your application&apos;s state.
-For 0 timeouts use gst_bus_pop_filtered() instead of this function; for
-other short timeouts use gst_bus_timed_pop_filtered(); everything else is
-better handled by setting up an asynchronous bus watch and doing things
-from there.
-The message is taken from the bus and needs to be unreffed with
-gst_message_unref() after usage.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="events" transfer-ownership="none">
-            <type name="MessageType" c:type="GstMessageType"/>
-          </parameter>
-          <parameter name="timeout" transfer-ownership="none">
-            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="async_signal_func"
-              c:identifier="gst_bus_async_signal_func"
-              doc="A helper #GstBusFunc that can be used to convert all asynchronous messages
-into signals.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage*"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="sync_signal_handler"
-              c:identifier="gst_bus_sync_signal_handler"
-              doc="A helper GstBusSyncHandler that can be used to convert all synchronous
-messages into signals.">
-        <return-value transfer-ownership="full">
-          <type name="BusSyncReply" c:type="GstBusSyncReply"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage*"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_signal_watch"
-              c:identifier="gst_bus_add_signal_watch"
-              doc="Adds a bus signal watch to the default main context with the default
-priority.
-After calling this statement, the bus will emit the &quot;message&quot; signal for each
-message posted on the bus.
-This function may be called multiple times. To clean up, the caller is
-responsible for calling gst_bus_remove_signal_watch() as many times as this
-function is called.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="add_signal_watch_full"
-              c:identifier="gst_bus_add_signal_watch_full"
-              doc="Adds a bus signal watch to the default main context with the given priority.
-After calling this statement, the bus will emit the &quot;message&quot; signal for each
-message posted on the bus when the main loop is running.
-This function may be called multiple times. To clean up, the caller is
-responsible for calling gst_bus_remove_signal_watch() as many times as this
-function is called.
-There can only be a single bus watch per bus, you most remove all signal watch
-before you can set another type of watch.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="priority" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_signal_watch"
-              c:identifier="gst_bus_remove_signal_watch"
-              doc="Removes a signal watch previously added with gst_bus_add_signal_watch().
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="enable_sync_message_emission"
-              c:identifier="gst_bus_enable_sync_message_emission"
-              doc="Instructs GStreamer to emit the &quot;sync-message&quot; signal after running the bus&apos;s
-sync handler. This function is here so that code can ensure that they can
-synchronously receive messages without having to affect what the bin&apos;s sync
-handler is.
-This function may be called multiple times. To clean up, the caller is
-responsible for calling gst_bus_disable_sync_message_emission() as many times
-as this function is called.
-While this function looks similar to gst_bus_add_signal_watch(), it is not
-exactly the same -- this function enables &lt;emphasis&gt;synchronous&lt;/emphasis&gt; emission of
-signals when messages arrive; gst_bus_add_signal_watch() adds an idle callback
-to pop messages off the bus &lt;emphasis&gt;asynchronously&lt;/emphasis&gt;. The sync-message signal
-comes from the thread of whatever object posted the message; the &quot;message&quot;
-signal is marshalled to the main thread via the main loop.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="disable_sync_message_emission"
-              c:identifier="gst_bus_disable_sync_message_emission"
-              doc="gst_bus_enable_sync_message_emission()
-Instructs GStreamer to stop emitting the &quot;sync-message&quot; signal for this bus.
-See gst_bus_enable_sync_message_emission() for more information.
-In the event that multiple pieces of code have called
-gst_bus_enable_sync_message_emission(), the sync-message emissions will only
-be stopped after all calls to gst_bus_enable_sync_message_emission() were
-&quot;cancelled&quot; by calling this function. In this way the semantics are exactly
-the same as gst_object_ref() that which calls enable should also call
-disable.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="queue">
-        <type name="GLib.Queue" c:type="GQueue*"/>
-      </field>
-      <field name="queue_lock">
-        <type name="GLib.Mutex" c:type="GMutex*"/>
-      </field>
-      <field name="sync_handler">
-        <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
-      </field>
-      <field name="sync_handler_data">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="signal_watch_id">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="num_signal_watchers">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="priv">
-        <type name="BusPrivate" c:type="GstBusPrivate*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-      <glib:signal name="message"
-                   doc="A message has been posted on the bus. This signal is emitted from a
-GSource added to the mainloop. this signal will only be emitted when
-there is a mainloop running.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="sync-message"
-                   doc="A message has been posted on the bus. This signal is emitted from the
-thread that posted the message so one has to be careful with locking.
-This signal will not be emitted by default, you have to set up
-gst_bus_sync_signal_handler() as a sync handler if you want this
-signal to be emitted when a message is posted on the bus, like this:
-&lt;programlisting&gt;
-gst_bus_set_sync_handler (bus, gst_bus_sync_signal_handler, yourdata);
-&lt;/programlisting&gt;">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="BusClass"
-            c:type="GstBusClass"
-            glib:is-gtype-struct-for="Bus">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="message">
-        <callback name="message" c:type="message">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="bus" transfer-ownership="none">
-              <type name="Bus" c:type="GstBus*"/>
-            </parameter>
-            <parameter name="message" transfer-ownership="none">
-              <type name="Message" c:type="GstMessage*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="sync_message">
-        <callback name="sync_message" c:type="sync_message">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="bus" transfer-ownership="none">
-              <type name="Bus" c:type="GstBus*"/>
-            </parameter>
-            <parameter name="message" transfer-ownership="none">
-              <type name="Message" c:type="GstMessage*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="BusFlags"
-              doc="The standard flags that a bus may have."
-              c:type="GstBusFlags">
-      <member name="flushing" value="16" c:identifier="GST_BUS_FLUSHING"/>
-      <member name="flag_last" value="32" c:identifier="GST_BUS_FLAG_LAST"/>
-    </bitfield>
-    <callback name="BusFunc"
-              c:type="GstBusFunc"
-              doc="Specifies the type of function passed to gst_bus_add_watch() or
-gst_bus_add_watch_full(), which is called from the mainloop when a message
-is available on the bus.
-The message passed to the function will be unreffed after execution of this
-function so it should not be freed in the function.
-Note that this function is used as a GSourceFunc which means that returning
-FALSE will remove the GSource from the mainloop.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="bus" transfer-ownership="none">
-          <type name="Bus" c:type="GstBus*"/>
-        </parameter>
-        <parameter name="message" transfer-ownership="none">
-          <type name="Message" c:type="GstMessage*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="BusPrivate" c:type="GstBusPrivate">
-    </record>
-    <callback name="BusSyncHandler"
-              c:type="GstBusSyncHandler"
-              doc="Handler will be invoked synchronously, when a new message has been injected
-into the bus. This function is mostly used internally. Only one sync handler
-can be attached to a given bus.
-If the handler returns GST_BUS_DROP, it should unref the message, else the
-message should not be unreffed by the sync handler.">
-      <return-value transfer-ownership="full">
-        <type name="BusSyncReply" c:type="GstBusSyncReply"/>
-      </return-value>
-      <parameters>
-        <parameter name="bus" transfer-ownership="none">
-          <type name="Bus" c:type="GstBus*"/>
-        </parameter>
-        <parameter name="message" transfer-ownership="none">
-          <type name="Message" c:type="GstMessage*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="BusSyncReply"
-                 doc="The result values for a GstBusSyncHandler."
-                 c:type="GstBusSyncReply">
-      <member name="drop" value="0" c:identifier="GST_BUS_DROP"/>
-      <member name="pass" value="1" c:identifier="GST_BUS_PASS"/>
-      <member name="async" value="2" c:identifier="GST_BUS_ASYNC"/>
-    </enumeration>
-    <constant name="CAN_INLINE" value="1">
-      <type name="int"/>
-    </constant>
-    <constant name="CLOCK_ENTRY_TRACE_NAME" value="GstClockEntry">
-      <type name="utf8"/>
-    </constant>
-    <constant name="CLOCK_TIME_NONE" value="-1">
-      <type name="int"/>
-    </constant>
-    <record name="Caps"
-            c:type="GstCaps"
-            doc="Object describing media types."
-            glib:type-name="GstCaps"
-            glib:get-type="gst_caps_get_type">
-      <field name="type" writable="1">
-        <type name="GType" c:type="GType"/>
-      </field>
-      <field name="refcount" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="flags" writable="1">
-        <type name="CapsFlags" c:type="GstCapsFlags"/>
-      </field>
-      <field name="structs" writable="1">
-        <type name="GLib.PtrArray" c:type="GPtrArray*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <constructor name="new_empty"
-                   c:identifier="gst_caps_new_empty"
-                   doc="Creates a new #GstCaps that is empty.  That is, the returned
-#GstCaps contains no media formats.
-Caller is responsible for unreffing the returned caps.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_any"
-                   c:identifier="gst_caps_new_any"
-                   doc="Creates a new #GstCaps that indicates that it is compatible with
-any media format.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_simple"
-                   c:identifier="gst_caps_new_simple"
-                   doc="Creates a new #GstCaps that contains one #GstStructure.  The
-structure is defined by the arguments, which have the same format
-as gst_structure_new().
-Caller is responsible for unreffing the returned caps.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-        <parameters>
-          <parameter name="media_type" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_full"
-                   c:identifier="gst_caps_new_full"
-                   doc="Creates a new #GstCaps and adds all the structures listed as
-arguments.  The list must be NULL-terminated.  The structures
-are not copied; the returned #GstCaps owns the structures.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-        <parameters>
-          <parameter name="struct1" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="ref"
-              c:identifier="gst_caps_ref"
-              doc="Add a reference to a #GstCaps object.
-From this point on, until the caller calls gst_caps_unref() or
-gst_caps_make_writable(), it is guaranteed that the caps object will not
-change. This means its structures won&apos;t change, etc. To use a #GstCaps
-object, you must always have a refcount on it -- either the one made
-implicitly by e.g. gst_caps_new_simple(), or via taking one explicitly with
-this function.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="copy"
-              c:identifier="gst_caps_copy"
-              doc="Creates a new #GstCaps as a copy of the old @caps. The new caps will have a
-refcount of 1, owned by the caller. The structures are copied as well.
-Note that this function is the semantic equivalent of a gst_caps_ref()
-followed by a gst_caps_make_writable(). If you only want to hold on to a
-reference to the data, you should use gst_caps_ref().
-When you are finished with the caps, call gst_caps_unref() on it.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="make_writable"
-              c:identifier="gst_caps_make_writable"
-              doc="Returns a writable copy of @caps.
-If there is only one reference count on @caps, the caller must be the owner,
-and so this function will return the caps object unchanged. If on the other
-hand there is more than one reference on the object, a new caps object will
-be returned. The caller&apos;s reference on @caps will be removed, and instead the
-caller will own a reference to the returned object.
-In short, this function unrefs the caps in the argument and refs the caps
-that it returns. Don&apos;t access the argument after calling this function. See">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="unref"
-              c:identifier="gst_caps_unref"
-              doc="Unref a #GstCaps and and free all its structures and the
-structures&apos; values when the refcount reaches 0.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="append"
-              c:identifier="gst_caps_append"
-              doc="Appends the structures contained in @caps2 to @caps1. The structures in
-freed. If either caps is ANY, the resulting caps will be ANY.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="merge"
-              c:identifier="gst_caps_merge"
-              doc="Appends the structures contained in @caps2 to @caps1 if they are not yet
-expressed by @caps1. The structures in @caps2 are not copied -- they are
-transferred to @caps1, and then @caps2 is freed.
-If either caps is ANY, the resulting caps will be ANY."
-              version="0.10.10">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="append_structure"
-              c:identifier="gst_caps_append_structure"
-              doc="Appends @structure to @caps.  The structure is not copied; @caps
-becomes the owner of @structure.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_structure"
-              c:identifier="gst_caps_remove_structure"
-              doc="removes the stucture with the given index from the list of structures
-contained in @caps.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="idx" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="merge_structure"
-              c:identifier="gst_caps_merge_structure"
-              doc="Appends @structure to @caps if its not already expressed by @caps.  The
-structure is not copied; @caps becomes the owner of @structure.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_size"
-              c:identifier="gst_caps_get_size"
-              doc="Gets the number of structures contained in @caps.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="get_structure"
-              c:identifier="gst_caps_get_structure"
-              doc="Finds the structure in @caps that has the index @index, and
-returns it.
-non-const GstStructure *.  This is for programming convenience --
-the caller should be aware that structures inside a constant
-#GstCaps should not be modified. However, if you know the caps
-are writable, either because you have just copied them or made
-them writable with gst_caps_make_writable(), you may modify the
-structure returned in the usual way, e.g. with functions like
-gst_structure_set().
-You do not need to free or unref the structure returned, it
-belongs to the #GstCaps.">
-        <return-value transfer-ownership="full">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-        <parameters>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="copy_nth"
-              c:identifier="gst_caps_copy_nth"
-              doc="Creates a new #GstCaps and appends a copy of the nth structure
-contained in @caps.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-        <parameters>
-          <parameter name="nth" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="truncate"
-              c:identifier="gst_caps_truncate"
-              doc="Destructively discard all but the first structure from @caps. Useful when
-fixating. @caps must be writable.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="set_value"
-              c:identifier="gst_caps_set_value"
-              doc="Sets the given @field on all structures of @caps to the given @value.
-This is a convenience function for calling gst_structure_set_value() on
-all structures of @caps."
-              version="0.10.26">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="field" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_simple"
-              c:identifier="gst_caps_set_simple"
-              doc="Sets fields in a #GstCaps.  The arguments must be passed in the same
-manner as gst_structure_set(), and be NULL-terminated.
-&lt;note&gt;Prior to GStreamer version 0.10.26, this function failed when
-of GStreamer, you may only call this function when GST_CAPS_IS_SIMPLE()
-is %TRUE for @caps.&lt;/note&gt;">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="field" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_any"
-              c:identifier="gst_caps_is_any"
-              doc="Determines if @caps represents any media format.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="is_empty"
-              c:identifier="gst_caps_is_empty"
-              doc="Determines if @caps represents no media formats.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="is_fixed"
-              c:identifier="gst_caps_is_fixed"
-              doc="Fixed #GstCaps describe exactly one format, that is, they have exactly
-one structure, and each field in the structure describes a fixed type.
-Examples of non-fixed types are GST_TYPE_INT_RANGE and GST_TYPE_LIST.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="is_always_compatible"
-              c:identifier="gst_caps_is_always_compatible"
-              doc="A given #GstCaps structure is always compatible with another if
-every media format that is in the first is also contained in the
-second.  That is, @caps1 is a subset of @caps2.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_subset"
-              c:identifier="gst_caps_is_subset"
-              doc="Checks if all caps represented by @subset are also represented by @superset.
-&lt;note&gt;This function does not work reliably if optional properties for caps
-are included on one caps and omitted on the other.&lt;/note&gt;">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="superset" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_equal"
-              c:identifier="gst_caps_is_equal"
-              doc="Checks if the given caps represent the same set of caps.
-&lt;note&gt;This function does not work reliably if optional properties for caps
-are included on one caps and omitted on the other.&lt;/note&gt;
-This function deals correctly with passing NULL for any of the caps.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_equal_fixed"
-              c:identifier="gst_caps_is_equal_fixed"
-              doc="Tests if two #GstCaps are equal.  This function only works on fixed
-#GstCaps.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="can_intersect"
-              c:identifier="gst_caps_can_intersect"
-              doc="Tries intersecting @caps1 and @caps2 and reports wheter the result would not
-be empty"
-              version="0.10.25">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="intersect"
-              c:identifier="gst_caps_intersect"
-              doc="Creates a new #GstCaps that contains all the formats that are common
-to both @caps1 and @caps2.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="subtract"
-              c:identifier="gst_caps_subtract"
-              doc="Subtracts the @subtrahend from the @minuend.
-&lt;note&gt;This function does not work reliably if optional properties for caps
-are included on one caps and omitted on the other.&lt;/note&gt;">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-        <parameters>
-          <parameter name="subtrahend" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="union"
-              c:identifier="gst_caps_union"
-              doc="Creates a new #GstCaps that contains all the formats that are in
-either @caps1 and @caps2.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps2" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="normalize"
-              c:identifier="gst_caps_normalize"
-              doc="Creates a new #GstCaps that represents the same set of formats as">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="do_simplify"
-              c:identifier="gst_caps_do_simplify"
-              doc="Modifies the given @caps inplace into a representation that represents the
-same set of formats, but in a simpler form.  Component structures that are
-identical are merged.  Component structures that have values that can be
-merged are also merged.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="save_thyself"
-              c:identifier="gst_caps_save_thyself"
-              doc="Serializes a #GstCaps to XML and adds it as a child node of @parent.">
-        <return-value transfer-ownership="full">
-          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-        </return-value>
-        <parameters>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="replace"
-              c:identifier="gst_caps_replace"
-              doc="Replaces *caps with @newcaps.  Unrefs the #GstCaps in the location
-pointed to by @caps, if applicable, then modifies @caps to point to
-This function does not take any locks so you might want to lock
-the object owning @caps pointer.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="newcaps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_string"
-              c:identifier="gst_caps_to_string"
-              doc="Converts @caps to a string representation.  This string representation
-can be converted back to a #GstCaps by gst_caps_from_string().
-For debugging purposes its easier to do something like this:
-|[
-GST_LOG (&quot;caps are %&quot; GST_PTR_FORMAT, caps);
-]|
-This prints the caps in human readble form.">
-        <return-value transfer-ownership="full">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-    </record>
-    <bitfield name="CapsFlags"
-              doc="anything.
-Extra flags for a caps."
-              c:type="GstCapsFlags">
-      <member name="caps_flags_any"
-              value="1"
-              c:identifier="GST_CAPS_FLAGS_ANY"/>
-    </bitfield>
-    <interface name="ChildProxy"
-               c:type="GstChildProxy"
-               doc="Opaque #GstChildProxy data structure."
-               glib:type-name="GstChildProxy"
-               glib:get-type="gst_child_proxy_get_type"
-               glib:type-struct="ChildProxyInterface">
-      <prerequisite name="Object"/>
-      <virtual-method name="get_child_by_index" invoker="get_child_by_index">
-        <return-value transfer-ownership="full">
-          <type name="Object" c:type="GstObject*"/>
-        </return-value>
-        <parameters>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_children_count" invoker="get_children_count">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </virtual-method>
-      <method name="get_child_by_name"
-              c:identifier="gst_child_proxy_get_child_by_name"
-              doc="Looks up a child element by the given name.
-Implementors can use #GstObject together with gst_object_get_name()
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Object" c:type="GstObject*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_child_by_index"
-              c:identifier="gst_child_proxy_get_child_by_index"
-              doc="Fetches a child by its number.
-after usage.
-MT safe.">
-        <return-value transfer-ownership="full" doc="Unref">
-          <type name="Object" c:type="GstObject*"/>
-        </return-value>
-        <parameters>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_children_count"
-              c:identifier="gst_child_proxy_get_children_count"
-              doc="Gets the number of child objects this parent contains.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <glib:signal name="child-added">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="GObject.Object" c:type="GObject"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="child-removed">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="GObject.Object" c:type="GObject"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </interface>
-    <record name="ChildProxyInterface"
-            c:type="GstChildProxyInterface"
-            glib:is-gtype-struct-for="ChildProxy"
-            doc="#GstChildProxy interface.">
-      <field name="parent">
-        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
-      </field>
-      <field name="get_child_by_index">
-        <callback name="get_child_by_index" c:type="get_child_by_index">
-          <return-value transfer-ownership="full">
-            <type name="Object" c:type="GstObject*"/>
-          </return-value>
-          <parameters>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="ChildProxy" c:type="GstChildProxy*"/>
-            </parameter>
-            <parameter name="index" transfer-ownership="none">
-              <type name="uint" c:type="guint"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_children_count">
-        <callback name="get_children_count" c:type="get_children_count">
-          <return-value transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </return-value>
-          <parameters>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="ChildProxy" c:type="GstChildProxy*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="child_added">
-        <callback name="child_added" c:type="child_added">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="ChildProxy" c:type="GstChildProxy*"/>
-            </parameter>
-            <parameter name="child" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="child_removed">
-        <callback name="child_removed" c:type="child_removed">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="ChildProxy" c:type="GstChildProxy*"/>
-            </parameter>
-            <parameter name="child" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <class name="Clock"
-           c:type="GstClock"
-           doc="#GstClock base structure. The values of this structure are
-protected for subclasses, use the methods to use the #GstClock."
-           parent="Object"
-           glib:type-name="GstClock"
-           glib:get-type="gst_clock_get_type"
-           glib:type-struct="ClockClass">
-      <function name="id_ref"
-                c:identifier="gst_clock_id_ref"
-                doc="Increase the refcount of given @id.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="ClockID" c:type="GstClockID"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="ClockID" c:type="GstClockID"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="id_unref"
-                c:identifier="gst_clock_id_unref"
-                doc="Unref given @id. When the refcount reaches 0 the
-#GstClockID will be freed.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="ClockID" c:type="GstClockID"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="id_compare_func"
-                c:identifier="gst_clock_id_compare_func">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-        <parameters>
-          <parameter name="id1" transfer-ownership="none">
-            <type name="any" c:type="gconstpointer"/>
-          </parameter>
-          <parameter name="id2" transfer-ownership="none">
-            <type name="any" c:type="gconstpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="id_get_time" c:identifier="gst_clock_id_get_time">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="ClockID" c:type="GstClockID"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="id_wait" c:identifier="gst_clock_id_wait">
-        <return-value transfer-ownership="full">
-          <type name="ClockReturn" c:type="GstClockReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="ClockID" c:type="GstClockID"/>
-          </parameter>
-          <parameter name="jitter" transfer-ownership="none">
-            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="id_wait_async"
-                c:identifier="gst_clock_id_wait_async"
-                doc="Register a callback on the given #GstClockID @id with the given
-function and user_data. When passing a #GstClockID with an invalid
-time to this function, the callback will be called immediately
-with  a time set to GST_CLOCK_TIME_NONE. The callback will
-be called when the time of @id has been reached.
-The callback @func can be invoked from any thread, either provided by the
-core or from a streaming thread. The application should be prepared for this.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="ClockReturn" c:type="GstClockReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="ClockID" c:type="GstClockID"/>
-          </parameter>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="ClockCallback" c:type="GstClockCallback"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="id_unschedule"
-                c:identifier="gst_clock_id_unschedule"
-                doc="Cancel an outstanding request with @id. This can either
-be an outstanding async notification or a pending sync notification.
-After this call, @id cannot be used anymore to receive sync or
-async notifications, you need to create a new #GstClockID.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="ClockID" c:type="GstClockID"/>
-          </parameter>
-        </parameters>
-      </function>
-      <virtual-method name="change_resolution">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-        <parameters>
-          <parameter name="old_resolution" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="new_resolution" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_resolution" invoker="get_resolution">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="get_internal_time" invoker="get_internal_time">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="wait">
-        <return-value transfer-ownership="full">
-          <type name="ClockReturn" c:type="GstClockReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="entry" transfer-ownership="none">
-            <type name="ClockEntry" c:type="GstClockEntry*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="wait_async">
-        <return-value transfer-ownership="full">
-          <type name="ClockReturn" c:type="GstClockReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="entry" transfer-ownership="none">
-            <type name="ClockEntry" c:type="GstClockEntry*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="unschedule">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="entry" transfer-ownership="none">
-            <type name="ClockEntry" c:type="GstClockEntry*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="wait_jitter">
-        <return-value transfer-ownership="full">
-          <type name="ClockReturn" c:type="GstClockReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="entry" transfer-ownership="none">
-            <type name="ClockEntry" c:type="GstClockEntry*"/>
-          </parameter>
-          <parameter name="jitter" transfer-ownership="none">
-            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="set_resolution" c:identifier="gst_clock_set_resolution">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-        <parameters>
-          <parameter name="resolution" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_resolution" c:identifier="gst_clock_get_resolution">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="get_time" c:identifier="gst_clock_get_time">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="set_calibration" c:identifier="gst_clock_set_calibration">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="internal" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="external" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="rate_num" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="rate_denom" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_calibration" c:identifier="gst_clock_get_calibration">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="internal" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-          <parameter name="external" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-          <parameter name="rate_num" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-          <parameter name="rate_denom" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_master" c:identifier="gst_clock_set_master">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="master" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_master" c:identifier="gst_clock_get_master">
-        <return-value transfer-ownership="full">
-          <type name="Clock" c:type="GstClock*"/>
-        </return-value>
-      </method>
-      <method name="add_observation" c:identifier="gst_clock_add_observation">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="slave" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="master" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="r_squared"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_internal_time"
-              c:identifier="gst_clock_get_internal_time">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="adjust_unlocked" c:identifier="gst_clock_adjust_unlocked">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-        <parameters>
-          <parameter name="internal" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="unadjust_unlocked"
-              c:identifier="gst_clock_unadjust_unlocked">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-        <parameters>
-          <parameter name="external" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="new_single_shot_id"
-              c:identifier="gst_clock_new_single_shot_id">
-        <return-value transfer-ownership="full">
-          <type name="ClockID" c:type="GstClockID"/>
-        </return-value>
-        <parameters>
-          <parameter name="time" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="new_periodic_id" c:identifier="gst_clock_new_periodic_id">
-        <return-value transfer-ownership="full">
-          <type name="ClockID" c:type="GstClockID"/>
-        </return-value>
-        <parameters>
-          <parameter name="start_time" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="interval" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <property name="stats" writable="1">
-        <type name="boolean" c:type="gboolean"/>
-      </property>
-      <property name="timeout" writable="1">
-        <type name="uint64" c:type="guint64"/>
-      </property>
-      <property name="window-size" writable="1">
-        <type name="int" c:type="gint"/>
-      </property>
-      <property name="window-threshold" writable="1">
-        <type name="int" c:type="gint"/>
-      </property>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="slave_lock">
-        <type name="GLib.Mutex" c:type="GMutex*"/>
-      </field>
-      <field name="internal_calibration">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="external_calibration">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="rate_numerator">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="rate_denominator">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="last_time">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="entries">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="entries_changed">
-        <type name="GLib.Cond" c:type="GCond*"/>
-      </field>
-      <field name="resolution">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="stats">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="master">
-        <type name="Clock" c:type="GstClock*"/>
-      </field>
-      <field name="filling">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="window_size">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="window_threshold">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="time_index">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="timeout">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="times">
-        <type name="ClockTime" c:type="GstClockTime*"/>
-      </field>
-      <field name="clockid">
-        <type name="ClockID" c:type="GstClockID"/>
-      </field>
-      <union name="ABI" c:type="ABI">
-        <field name="priv" writable="1">
-          <type name="ClockPrivate" c:type="GstClockPrivate*"/>
-        </field>
-        <field name="_gst_reserved" writable="1">
-          <array zero-terminated="0" c:type="GstClockTime" fixed-size="4">
-            <type name="ClockTime"/>
-          </array>
-        </field>
-      </union>
-    </class>
-    <callback name="ClockCallback"
-              c:type="GstClockCallback"
-              doc="The function prototype of the callback.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="clock" transfer-ownership="none">
-          <type name="Clock" c:type="GstClock*"/>
-        </parameter>
-        <parameter name="time" transfer-ownership="none">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </parameter>
-        <parameter name="id" transfer-ownership="none">
-          <type name="ClockID" c:type="GstClockID"/>
-        </parameter>
-        <parameter name="user_data"
-                   transfer-ownership="none"
-                   closure="3"
-                   doc="function">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="ClockClass"
-            c:type="GstClockClass"
-            glib:is-gtype-struct-for="Clock"
-            doc="be acceptable. The new resolution should be returned.
-implement @wait_jitter instead.
-GStreamer clock class. Override the vmethods to implement the clock
-functionality.">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="change_resolution">
-        <callback name="change_resolution" c:type="change_resolution">
-          <return-value transfer-ownership="full">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-            <parameter name="old_resolution" transfer-ownership="none">
-              <type name="ClockTime" c:type="GstClockTime"/>
-            </parameter>
-            <parameter name="new_resolution" transfer-ownership="none">
-              <type name="ClockTime" c:type="GstClockTime"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_resolution">
-        <callback name="get_resolution" c:type="get_resolution">
-          <return-value transfer-ownership="full">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_internal_time">
-        <callback name="get_internal_time" c:type="get_internal_time">
-          <return-value transfer-ownership="full">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="wait">
-        <callback name="wait" c:type="wait">
-          <return-value transfer-ownership="full">
-            <type name="ClockReturn" c:type="GstClockReturn"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-            <parameter name="entry" transfer-ownership="none">
-              <type name="ClockEntry" c:type="GstClockEntry*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="wait_async">
-        <callback name="wait_async" c:type="wait_async">
-          <return-value transfer-ownership="full">
-            <type name="ClockReturn" c:type="GstClockReturn"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-            <parameter name="entry" transfer-ownership="none">
-              <type name="ClockEntry" c:type="GstClockEntry*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="unschedule">
-        <callback name="unschedule" c:type="unschedule">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-            <parameter name="entry" transfer-ownership="none">
-              <type name="ClockEntry" c:type="GstClockEntry*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="wait_jitter">
-        <callback name="wait_jitter" c:type="wait_jitter">
-          <return-value transfer-ownership="full">
-            <type name="ClockReturn" c:type="GstClockReturn"/>
-          </return-value>
-          <parameters>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-            <parameter name="entry" transfer-ownership="none">
-              <type name="ClockEntry" c:type="GstClockEntry*"/>
-            </parameter>
-            <parameter name="jitter" transfer-ownership="none">
-              <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="ClockEntry"
-            c:type="GstClockEntry"
-            doc="All pending timeouts or periodic notifies are converted into
-an entry.">
-      <field name="refcount" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="clock" writable="1">
-        <type name="Clock" c:type="GstClock*"/>
-      </field>
-      <field name="type" writable="1">
-        <type name="ClockEntryType" c:type="GstClockEntryType"/>
-      </field>
-      <field name="time" writable="1">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="interval" writable="1">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="status" writable="1">
-        <type name="ClockReturn" c:type="GstClockReturn"/>
-      </field>
-      <field name="func" writable="1">
-        <type name="ClockCallback" c:type="GstClockCallback"/>
-      </field>
-      <field name="user_data" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-    </record>
-    <enumeration name="ClockEntryType"
-                 doc="The type of the clock entry"
-                 c:type="GstClockEntryType">
-      <member name="single" value="0" c:identifier="GST_CLOCK_ENTRY_SINGLE"/>
-      <member name="periodic"
-              value="1"
-              c:identifier="GST_CLOCK_ENTRY_PERIODIC"/>
-    </enumeration>
-    <bitfield name="ClockFlags"
-              doc="The capabilities of this clock"
-              c:type="GstClockFlags">
-      <member name="can_do_single_sync"
-              value="16"
-              c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC"/>
-      <member name="can_do_single_async"
-              value="32"
-              c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC"/>
-      <member name="can_do_periodic_sync"
-              value="64"
-              c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC"/>
-      <member name="can_do_periodic_async"
-              value="128"
-              c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC"/>
-      <member name="can_set_resolution"
-              value="256"
-              c:identifier="GST_CLOCK_FLAG_CAN_SET_RESOLUTION"/>
-      <member name="can_set_master"
-              value="512"
-              c:identifier="GST_CLOCK_FLAG_CAN_SET_MASTER"/>
-      <member name="last" value="4096" c:identifier="GST_CLOCK_FLAG_LAST"/>
-    </bitfield>
-    <record name="ClockPrivate" c:type="GstClockPrivate">
-    </record>
-    <enumeration name="ClockReturn"
-                 doc="The return value of a clock operation."
-                 c:type="GstClockReturn">
-      <member name="ok" value="0" c:identifier="GST_CLOCK_OK"/>
-      <member name="early" value="1" c:identifier="GST_CLOCK_EARLY"/>
-      <member name="unscheduled"
-              value="2"
-              c:identifier="GST_CLOCK_UNSCHEDULED"/>
-      <member name="busy" value="3" c:identifier="GST_CLOCK_BUSY"/>
-      <member name="badtime" value="4" c:identifier="GST_CLOCK_BADTIME"/>
-      <member name="error" value="5" c:identifier="GST_CLOCK_ERROR"/>
-      <member name="unsupported"
-              value="6"
-              c:identifier="GST_CLOCK_UNSUPPORTED"/>
-    </enumeration>
-    <enumeration name="ClockType"
-                 doc="point
-The different kind of clocks."
-                 c:type="GstClockType">
-      <member name="realtime"
-              value="0"
-              c:identifier="GST_CLOCK_TYPE_REALTIME"/>
-      <member name="monotonic"
-              value="1"
-              c:identifier="GST_CLOCK_TYPE_MONOTONIC"/>
-    </enumeration>
-    <callback name="CopyFunction"
-              c:type="GstCopyFunction"
-              doc="A function to create a copy of some object or
-increase its reference count."
-              version="0.10.25">
-      <return-value transfer-ownership="none">
-        <type name="any" c:type="gpointer"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="CoreError"
-                 doc="category.  Make sure you add a custom message to the error call.
-deciding where to go while developing code.
-this functionality yet.
-Core errors are errors inside the core GStreamer library."
-                 c:type="GstCoreError"
-                 glib:error-quark="gst_core_error_quark">
-      <member name="failed" value="1" c:identifier="GST_CORE_ERROR_FAILED"/>
-      <member name="too_lazy"
-              value="2"
-              c:identifier="GST_CORE_ERROR_TOO_LAZY"/>
-      <member name="not_implemented"
-              value="3"
-              c:identifier="GST_CORE_ERROR_NOT_IMPLEMENTED"/>
-      <member name="state_change"
-              value="4"
-              c:identifier="GST_CORE_ERROR_STATE_CHANGE"/>
-      <member name="pad" value="5" c:identifier="GST_CORE_ERROR_PAD"/>
-      <member name="thread" value="6" c:identifier="GST_CORE_ERROR_THREAD"/>
-      <member name="negotiation"
-              value="7"
-              c:identifier="GST_CORE_ERROR_NEGOTIATION"/>
-      <member name="event" value="8" c:identifier="GST_CORE_ERROR_EVENT"/>
-      <member name="seek" value="9" c:identifier="GST_CORE_ERROR_SEEK"/>
-      <member name="caps" value="10" c:identifier="GST_CORE_ERROR_CAPS"/>
-      <member name="tag" value="11" c:identifier="GST_CORE_ERROR_TAG"/>
-      <member name="missing_plugin"
-              value="12"
-              c:identifier="GST_CORE_ERROR_MISSING_PLUGIN"/>
-      <member name="clock" value="13" c:identifier="GST_CORE_ERROR_CLOCK"/>
-      <member name="disabled"
-              value="14"
-              c:identifier="GST_CORE_ERROR_DISABLED"/>
-      <member name="num_errors"
-              value="15"
-              c:identifier="GST_CORE_ERROR_NUM_ERRORS"/>
-    </enumeration>
-    <constant name="DEBUG_BG_MASK" value="240">
-      <type name="int"/>
-    </constant>
-    <constant name="DEBUG_FG_MASK" value="15">
-      <type name="int"/>
-    </constant>
-    <constant name="DEBUG_FORMAT_MASK" value="65280">
-      <type name="int"/>
-    </constant>
-    <glib:boxed c:type="GstDate"
-                glib:name="Date"
-                glib:type-name="GstDate"
-                glib:get-type="gst_date_get_type">
-    </glib:boxed>
-    <record name="DebugCategory"
-            c:type="GstDebugCategory"
-            doc="This is the struct that describes the categories. Once initialized with
-#GST_DEBUG_CATEGORY_INIT, its values can&apos;t be changed anymore.">
-      <field name="threshold" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="color" writable="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="name" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="description" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <method name="free"
-              c:identifier="gst_debug_category_free"
-              doc="Removes and frees the category and all associated resources.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="set_threshold"
-              c:identifier="gst_debug_category_set_threshold"
-              doc="Sets the threshold of the category to the given level. Debug information will
-only be output if the threshold is lower or equal to the level of the
-debugging message.
-&lt;note&gt;&lt;para&gt;
-Do not use this function in production code, because other functions may
-change the threshold of categories as side effect. It is however a nice
-function to use when debugging (even from gdb).
-&lt;/para&gt;&lt;/note&gt;">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="level" transfer-ownership="none">
-            <type name="DebugLevel" c:type="GstDebugLevel"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="reset_threshold"
-              c:identifier="gst_debug_category_reset_threshold"
-              doc="Resets the threshold of the category to the default level. Debug information
-will only be output if the threshold is lower or equal to the level of the
-debugging message.
-Use this function to set the threshold back to where it was after using
-gst_debug_category_set_threshold().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_threshold"
-              c:identifier="gst_debug_category_get_threshold"
-              doc="Returns the threshold of a #GstDebugCategory.">
-        <return-value transfer-ownership="full">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </return-value>
-      </method>
-      <method name="get_name"
-              c:identifier="gst_debug_category_get_name"
-              doc="Returns the name of a debug category.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_color"
-              c:identifier="gst_debug_category_get_color"
-              doc="Returns the color of a debug category used when printing output in this
-category.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="get_description"
-              c:identifier="gst_debug_category_get_description"
-              doc="Returns the description of a debug category.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-    </record>
-    <enumeration name="DebugColorFlags"
-                 doc="These are some terminal style flags you can use when creating your
-debugging categories to make them stand out in debugging output."
-                 c:type="GstDebugColorFlags">
-      <member name="fg_black" value="0" c:identifier="GST_DEBUG_FG_BLACK"/>
-      <member name="fg_red" value="1" c:identifier="GST_DEBUG_FG_RED"/>
-      <member name="fg_green" value="2" c:identifier="GST_DEBUG_FG_GREEN"/>
-      <member name="fg_yellow" value="3" c:identifier="GST_DEBUG_FG_YELLOW"/>
-      <member name="fg_blue" value="4" c:identifier="GST_DEBUG_FG_BLUE"/>
-      <member name="fg_magenta" value="5" c:identifier="GST_DEBUG_FG_MAGENTA"/>
-      <member name="fg_cyan" value="6" c:identifier="GST_DEBUG_FG_CYAN"/>
-      <member name="fg_white" value="7" c:identifier="GST_DEBUG_FG_WHITE"/>
-      <member name="bg_black" value="0" c:identifier="GST_DEBUG_BG_BLACK"/>
-      <member name="bg_red" value="16" c:identifier="GST_DEBUG_BG_RED"/>
-      <member name="bg_green" value="32" c:identifier="GST_DEBUG_BG_GREEN"/>
-      <member name="bg_yellow" value="48" c:identifier="GST_DEBUG_BG_YELLOW"/>
-      <member name="bg_blue" value="64" c:identifier="GST_DEBUG_BG_BLUE"/>
-      <member name="bg_magenta"
-              value="80"
-              c:identifier="GST_DEBUG_BG_MAGENTA"/>
-      <member name="bg_cyan" value="96" c:identifier="GST_DEBUG_BG_CYAN"/>
-      <member name="bg_white" value="112" c:identifier="GST_DEBUG_BG_WHITE"/>
-      <member name="bold" value="256" c:identifier="GST_DEBUG_BOLD"/>
-      <member name="underline" value="512" c:identifier="GST_DEBUG_UNDERLINE"/>
-    </enumeration>
-    <callback name="DebugFuncPtr" c:type="GstDebugFuncPtr">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-    </callback>
-    <bitfield name="DebugGraphDetails"
-              doc="Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE()
-and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS()."
-              version="0.10.15"
-              c:type="GstDebugGraphDetails">
-      <member name="media_type"
-              value="1"
-              c:identifier="GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE"/>
-      <member name="caps_details"
-              value="2"
-              c:identifier="GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS"/>
-      <member name="non_default_params"
-              value="4"
-              c:identifier="GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS"/>
-      <member name="states"
-              value="8"
-              c:identifier="GST_DEBUG_GRAPH_SHOW_STATES"/>
-      <member name="all" value="15" c:identifier="GST_DEBUG_GRAPH_SHOW_ALL"/>
-    </bitfield>
-    <enumeration name="DebugLevel"
-                 doc="debugging output.
-that stops the application from keeping working correctly.
-An examples is gst_element_error, which outputs a message with this priority.
-It does not mean that the application is terminating as with g_errror.
-that could lead to problems or weird behaviour later on. An example of this
-would be clocking issues (&quot;your computer is pretty slow&quot;) or broken input
-data (&quot;Can&apos;t synchronize to stream.&quot;)
-updated about what is happening.
-Examples where this should be used are when a typefind function has
-successfully determined the type of the stream or when an mp3 plugin detects
-the format to be used. (&quot;This file has mono sound.&quot;)
-happens that is not the expected default behavior.
-An example would be notifications about state changes or receiving/sending of
-events.
-useful to know. As a rule of thumb a pipeline that is iterating as expected
-should never output anzthing else but LOG messages.
-Examples for this are referencing/dereferencing of objects or cothread switches.
-in the executed code path is not fully implemented or handled yet. Note
-that this does not replace proper error handling in any way, the purpose
-of this message is to make it easier to spot incomplete/unfinished pieces
-data as memory dumps in the log. They will be displayed as hexdump with
-The level defines the importance of a debugging message. The more important a
-message is, the greater the probability that the debugging system outputs it."
-                 c:type="GstDebugLevel">
-      <member name="none" value="0" c:identifier="GST_LEVEL_NONE"/>
-      <member name="error" value="1" c:identifier="GST_LEVEL_ERROR"/>
-      <member name="warning" value="2" c:identifier="GST_LEVEL_WARNING"/>
-      <member name="info" value="3" c:identifier="GST_LEVEL_INFO"/>
-      <member name="debug" value="4" c:identifier="GST_LEVEL_DEBUG"/>
-      <member name="log" value="5" c:identifier="GST_LEVEL_LOG"/>
-      <member name="fixme" value="6" c:identifier="GST_LEVEL_FIXME"/>
-      <member name="memdump" value="9" c:identifier="GST_LEVEL_MEMDUMP"/>
-      <member name="count" value="10" c:identifier="GST_LEVEL_COUNT"/>
-    </enumeration>
-    <record name="DebugMessage" c:type="GstDebugMessage">
-      <method name="get"
-              c:identifier="gst_debug_message_get"
-              doc="Gets the string representation of a #GstDebugMessage. This function is used
-in debug handlers to extract the message.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-    </record>
-    <constant name="ERROR_SYSTEM" value="system error: %s">
-      <type name="utf8"/>
-    </constant>
-    <constant name="EVENT_TRACE_NAME" value="GstEvent">
-      <type name="utf8"/>
-    </constant>
-    <constant name="EVENT_TYPE_BOTH" value="0">
-      <type name="int"/>
-    </constant>
-    <constant name="EVENT_TYPE_SHIFT" value="4">
-      <type name="int"/>
-    </constant>
-    <class name="Element"
-           c:type="GstElement"
-           doc="gst_element_set_state() and gst_element_get_state()
-the element is in the correct state.
-#GST_STATE_VOID_PENDING if the element is in the correct state
-parent element or the application. A #GstPipeline has a bus of its own.
-element by the toplevel #GstPipeline.
-PLAYING. Subtracting @base_time from the current clock time in the PLAYING
-state will yield the running_time against the clock.
-GStreamer element abstract base class."
-           parent="Object"
-           abstract="1"
-           glib:type-name="GstElement"
-           glib:get-type="gst_element_get_type"
-           glib:type-struct="ElementClass">
-      <function name="register"
-                c:identifier="gst_element_register"
-                doc="element (note that passing NULL only works in GStreamer 0.10.13 and later)
-Create a new elementfactory capable of instantiating objects of the">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="plugin" transfer-ownership="none">
-            <type name="Plugin" c:type="GstPlugin*"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="rank" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="make_from_uri"
-                c:identifier="gst_element_make_from_uri"
-                doc="Creates an element for handling the given URI.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="URIType" c:type="GstURIType"/>
-          </parameter>
-          <parameter name="uri" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="elementname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="state_get_name"
-                c:identifier="gst_element_state_get_name"
-                doc="Gets a string representing the given state.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-        <parameters>
-          <parameter name="state" transfer-ownership="none">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="state_change_return_get_name"
-                c:identifier="gst_element_state_change_return_get_name"
-                doc="Gets a string representing the given state change result."
-                version="0.10.11">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-        <parameters>
-          <parameter name="state_ret" transfer-ownership="none">
-            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-          </parameter>
-        </parameters>
-      </function>
-      <virtual-method name="request_new_pad">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="templ" transfer-ownership="none">
-            <type name="PadTemplate" c:type="GstPadTemplate*"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="release_pad">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_state" invoker="get_state">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="state" transfer-ownership="none">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-          <parameter name="pending" transfer-ownership="none">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-          <parameter name="timeout" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="set_state" invoker="set_state">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="state" transfer-ownership="none">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="change_state" invoker="change_state">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="transition" transfer-ownership="none">
-            <type name="StateChange" c:type="GstStateChange"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="set_bus" invoker="set_bus">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="bus" transfer-ownership="none">
-            <type name="Bus" c:type="GstBus*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="provide_clock" invoker="provide_clock">
-        <return-value transfer-ownership="full">
-          <type name="Clock" c:type="GstClock*"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="set_clock" invoker="set_clock">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_index" invoker="get_index">
-        <return-value transfer-ownership="full">
-          <type name="Index" c:type="GstIndex*"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="set_index" invoker="set_index">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="index" transfer-ownership="none">
-            <type name="Index" c:type="GstIndex*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="send_event" invoker="send_event">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="event" transfer-ownership="none">
-            <type name="Event" c:type="GstEvent*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_query_types" invoker="get_query_types">
-        <return-value transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType*"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="query" invoker="query">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="query" transfer-ownership="none">
-            <type name="Query" c:type="GstQuery*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="requires_clock"
-              c:identifier="gst_element_requires_clock"
-              doc="Query if the element requires a clock.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="provides_clock"
-              c:identifier="gst_element_provides_clock"
-              doc="Query if the element provides a clock. A #GstClock provided by an
-element can be used as the global #GstClock for the pipeline.
-An element that can provide a clock is only required to do so in the PAUSED
-state, this means when it is fully negotiated and has allocated the resources
-to operate the clock.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="provide_clock"
-              c:identifier="gst_element_provide_clock"
-              doc="Get the clock provided by the given element.
-&lt;note&gt;An element is only required to provide a clock in the PAUSED
-state. Some elements can provide a clock in other states.&lt;/note&gt;
-if no clock could be provided.  Unref after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Clock" c:type="GstClock*"/>
-        </return-value>
-      </method>
-      <method name="get_clock"
-              c:identifier="gst_element_get_clock"
-              doc="Gets the currently configured clock of the element. This is the clock as was
-last set with gst_element_set_clock().
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Clock" c:type="GstClock*"/>
-        </return-value>
-      </method>
-      <method name="set_clock"
-              c:identifier="gst_element_set_clock"
-              doc="Sets the clock for the element. This function increases the
-refcount on the clock. Any previously set clock on the object
-is unreffed.
-clock when it, for example, is not able to slave its internal clock to the
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_base_time"
-              c:identifier="gst_element_set_base_time"
-              doc="Set the base time of an element. See gst_element_get_base_time().
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="time" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_base_time"
-              c:identifier="gst_element_get_base_time"
-              doc="Returns the base time of the element. The base time is the
-absolute time of the clock when this element was last put to
-PLAYING. Subtracting the base time from the clock time gives
-the running time of the element.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="set_start_time"
-              c:identifier="gst_element_set_start_time"
-              doc="Set the start time of an element. The start time of the element is the
-running time of the element when it last went to the PAUSED state. In READY
-or after a flushing seek, it is set to 0.
-Toplevel elements like #GstPipeline will manage the start_time and
-base_time on its children. Setting the start_time to #GST_CLOCK_TIME_NONE
-on such a toplevel element will disable the distribution of the base_time to
-the children and can be useful if the application manages the base_time
-itself, for example if you want to synchronize capture from multiple
-pipelines, and you can also ensure that the pipelines have the same clock.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="time" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_start_time"
-              c:identifier="gst_element_get_start_time"
-              doc="Returns the start time of the element. The start time is the
-running time of the clock when this element was last put to PAUSED.
-Usually the start_time is managed by a toplevel element such as
-#GstPipeline.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="is_indexable"
-              c:identifier="gst_element_is_indexable"
-              doc="Queries if the element can be indexed.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_index"
-              c:identifier="gst_element_set_index"
-              doc="Set @index on the element. The refcount of the index
-will be increased, any previously set index is unreffed.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="index" transfer-ownership="none">
-            <type name="Index" c:type="GstIndex*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_index"
-              c:identifier="gst_element_get_index"
-              doc="Gets the index from the element.
-element. unref after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Index" c:type="GstIndex*"/>
-        </return-value>
-      </method>
-      <method name="set_bus"
-              c:identifier="gst_element_set_bus"
-              doc="Sets the bus of the element. Increases the refcount on the bus.
-For internal use only, unless you&apos;re testing elements.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="bus" transfer-ownership="none">
-            <type name="Bus" c:type="GstBus*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_bus"
-              c:identifier="gst_element_get_bus"
-              doc="Returns the bus of the element. Note that only a #GstPipeline will provide a
-bus for the application.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Bus" c:type="GstBus*"/>
-        </return-value>
-      </method>
-      <method name="add_pad"
-              c:identifier="gst_element_add_pad"
-              doc="Adds a pad (link point) to @element. @pad&apos;s parent will be set to @element;
-see gst_object_set_parent() for refcounting information.
-Pads are not automatically activated so elements should perform the needed
-steps to activate the pad in case this pad is added in the PAUSED or PLAYING
-state. See gst_pad_set_active() for more information about activating pads.
-The pad and the element should be unlocked when calling this function.
-This function will emit the #GstElement::pad-added signal on the element.
-a pad with the same name already existed or the pad already had another
-parent.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_pad"
-              c:identifier="gst_element_remove_pad"
-              doc="Removes @pad from @element. @pad will be destroyed if it has not been
-referenced elsewhere using gst_object_unparent().
-This function is used by plugin developers and should not be used
-by applications. Pads that were dynamically requested from elements
-with gst_element_get_request_pad() should be released with the
-gst_element_release_request_pad() function instead.
-Pads are not automatically deactivated so elements should perform the needed
-steps to deactivate the pad in case this pad is removed in the PAUSED or
-PLAYING state. See gst_pad_set_active() for more information about
-deactivating pads.
-The pad and the element should be unlocked when calling this function.
-This function will emit the #GstElement::pad-removed signal on the element.
-pad does not belong to the provided element.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="no_more_pads"
-              c:identifier="gst_element_no_more_pads"
-              doc="Use this function to signal that the element does not expect any more pads
-to show up in the current pipeline. This function should be called whenever
-pads have been added by the element itself. Elements with #GST_PAD_SOMETIMES
-pad templates use this in combination with autopluggers to figure out that
-the element is done initializing its pads.
-This function emits the #GstElement::no-more-pads signal.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_pad"
-              c:identifier="gst_element_get_pad"
-              doc="Retrieves a pad from @element by name. Tries gst_element_get_static_pad()
-first, then gst_element_get_request_pad().
-to the result pad should be released with gst_object_unref() in case of a static pad
-or gst_element_release_request_pad() in case of a request pad.
-Use gst_element_get_static_pad() or gst_element_get_request_pad() instead.
-depending on the type of the pad."
-              deprecated="This function is deprecated as it&apos;s unclear if the reference">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_static_pad"
-              c:identifier="gst_element_get_static_pad"
-              doc="Retrieves a pad from @element by name. This version only retrieves
-already-existing (i.e. &apos;static&apos;) pads.
-usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_request_pad"
-              c:identifier="gst_element_get_request_pad"
-              doc="Retrieves a pad from the element by name. This version only retrieves
-request pads. The pad should be released with
-gst_element_release_request_pad().">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="release_request_pad"
-              c:identifier="gst_element_release_request_pad"
-              doc="Makes the element free the previously requested pad as obtained
-with gst_element_get_request_pad().
-This does not unref the pad. If the pad was created by using
-gst_element_get_request_pad(), gst_element_release_request_pad() needs to be
-followed by gst_object_unref() to free the @pad.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="iterate_pads"
-              c:identifier="gst_element_iterate_pads"
-              doc="Retrieves an iterattor of @element&apos;s pads. The iterator should
-be freed after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_src_pads"
-              c:identifier="gst_element_iterate_src_pads"
-              doc="Retrieves an iterator of @element&apos;s source pads.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_sink_pads"
-              c:identifier="gst_element_iterate_sink_pads"
-              doc="Retrieves an iterator of @element&apos;s sink pads.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="send_event"
-              c:identifier="gst_element_send_event"
-              doc="Sends an event to an element. If the element doesn&apos;t implement an
-event handler, the event will be pushed on a random linked sink pad for
-upstream events or a random linked source pad for downstream events.
-This function takes owership of the provided event so you should
-gst_event_ref() it if you want to reuse the event after this call.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="event" transfer-ownership="none">
-            <type name="Event" c:type="GstEvent*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="seek"
-              c:identifier="gst_element_seek"
-              doc="Sends a seek event to an element. See gst_event_new_seek() for the details of
-the parameters. The seek event is sent to the element using
-gst_element_send_event().
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="SeekFlags" c:type="GstSeekFlags"/>
-          </parameter>
-          <parameter name="cur_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType"/>
-          </parameter>
-          <parameter name="cur" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_query_types"
-              c:identifier="gst_element_get_query_types"
-              doc="Get an array of query types from the element.
-If the element doesn&apos;t implement a query types function,
-the query will be forwarded to the peer of a random linked sink pad.
-be freed or modified.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType*"/>
-        </return-value>
-      </method>
-      <method name="query"
-              c:identifier="gst_element_query"
-              doc="Performs a query on the given element.
-For elements that don&apos;t implement a query handler, this function
-forwards the query to a random srcpad or to the peer of a
-random linked sinkpad of this element.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="query" transfer-ownership="none">
-            <type name="Query" c:type="GstQuery*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="post_message"
-              c:identifier="gst_element_post_message"
-              doc="Post a message on the element&apos;s #GstBus. This function takes ownership of the
-message; if you want to access the message after this call, you should add an
-additional reference before calling.
-%FALSE if the element did not have a bus.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="message" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="message_full"
-              c:identifier="gst_element_message_full"
-              doc="default message connected to code, or %NULL
-default debugging information, or %NULL
-Post an error, warning or info message on the bus from inside an element.
-#GST_MESSAGE_INFO.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="MessageType" c:type="GstMessageType"/>
-          </parameter>
-          <parameter name="domain" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-          <parameter name="code" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="text" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="file" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="function" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="line" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_locked_state"
-              c:identifier="gst_element_is_locked_state"
-              doc="Checks if the state of an element is locked.
-If the state of an element is locked, state changes of the parent don&apos;t
-affect the element.
-This way you can leave currently unused elements inside bins. Just lock their
-state before changing the state from #GST_STATE_NULL.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_locked_state"
-              c:identifier="gst_element_set_locked_state"
-              doc="Locks the state of an element, so state changes of the parent don&apos;t affect
-this element anymore.
-MT safe.
-or the elements state-locking needed no change.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="locked_state" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="sync_state_with_parent"
-              c:identifier="gst_element_sync_state_with_parent"
-              doc="Tries to change the state of the element to the same as its parent.
-If this function returns FALSE, the state of element is undefined.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="get_state"
-              c:identifier="gst_element_get_state"
-              doc="Can be %NULL.
-state change or %GST_CLOCK_TIME_NONE for infinite timeout.
-Gets the state of the element.
-For elements that performed an ASYNC state change, as reported by
-gst_element_set_state(), this function will block up to the
-specified timeout value for the state change to complete.
-If the element completes the state change or goes into
-an error, this function returns immediately with a return value of
-%GST_STATE_CHANGE_SUCCESS or %GST_STATE_CHANGE_FAILURE respectively.
-For elements that did not return %GST_STATE_CHANGE_ASYNC, this function
-returns the current and pending state immediately.
-This function returns %GST_STATE_CHANGE_NO_PREROLL if the element
-successfully changed its state but is not able to provide data yet.
-This mostly happens for live sources that only produce data in
-%GST_STATE_PLAYING. While the state change return is equivalent to
-%GST_STATE_CHANGE_SUCCESS, it is returned to the application to signal that
-some sink elements might not be able to complete their state change because
-an element is not producing data to complete the preroll. When setting the
-element to playing, the preroll will complete and playback will start.
-and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the
-element is still performing a state change or
-%GST_STATE_CHANGE_FAILURE if the last state change failed.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="state"
-                     direction="out"
-                     transfer-ownership="full"
-                     doc="a pointer to #GstState to hold the state. Can be %NULL.">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-          <parameter name="pending"
-                     direction="out"
-                     transfer-ownership="full"
-                     doc="a pointer to #GstState to hold the pending state.">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-          <parameter name="timeout" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_state"
-              c:identifier="gst_element_set_state"
-              doc="Sets the state of the element. This function will try to set the
-requested state by going through all the intermediary states and calling
-the class&apos;s state change function for each.
-This function can return #GST_STATE_CHANGE_ASYNC, in which case the
-element will perform the remainder of the state change asynchronously in
-another thread.
-An application can use gst_element_get_state() to wait for the completion
-of the state change or it can wait for a state change message on the bus.
-State changes to %GST_STATE_READY or %GST_STATE_NULL never return
-#GST_STATE_CHANGE_ASYNC.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="state" transfer-ownership="none">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="abort_state"
-              c:identifier="gst_element_abort_state"
-              doc="Abort the state change of the element. This function is used
-by elements that do asynchronous state changes and find out
-something is wrong.
-This function should be called with the STATE_LOCK held.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="change_state"
-              c:identifier="gst_element_change_state"
-              doc="Perform @transition on @element.
-This function must be called with STATE_LOCK held and is mainly used
-internally.">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="transition" transfer-ownership="none">
-            <type name="StateChange" c:type="GstStateChange"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="continue_state"
-              c:identifier="gst_element_continue_state"
-              doc="Commit the state change of the element and proceed to the next
-pending state if any. This function is used
-by elements that do asynchronous state changes.
-The core will normally call this method automatically when an
-element returned %GST_STATE_CHANGE_SUCCESS from the state change function.
-If after calling this method the element still has not reached
-the pending state, the next state change is performed.
-This method is used internally and should normally not be called by plugins
-or applications.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="ret" transfer-ownership="none">
-            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="lost_state"
-              c:identifier="gst_element_lost_state"
-              doc="Brings the element to the lost state. This function calls
-gst_element_lost_state_full() with the new_base_time set to %TRUE.
-This function is used internally and should normally not be called from
-plugins or applications.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="lost_state_full"
-              c:identifier="gst_element_lost_state_full"
-              doc="Brings the element to the lost state. The current state of the
-element is copied to the pending state so that any call to
-gst_element_get_state() will return %GST_STATE_CHANGE_ASYNC.
-An ASYNC_START message is posted with indication to distribute a new
-base_time to the element when @new_base_time is %TRUE.
-If the element was PLAYING, it will go to PAUSED. The element
-will be restored to its PLAYING state by the parent pipeline when it
-prerolls again.
-This is mostly used for elements that lost their preroll buffer
-in the %GST_STATE_PAUSED or %GST_STATE_PLAYING state after a flush,
-they will go to their pending state again when a new preroll buffer is
-queued. This function can only be called when the element is currently
-not in error or an async state change.
-This function is used internally and should normally not be called from
-plugins or applications.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="new_base_time" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_factory"
-              c:identifier="gst_element_get_factory"
-              doc="Retrieves the factory that was used to create this element.
-no refcounting is needed.">
-        <return-value transfer-ownership="full">
-          <type name="ElementFactory" c:type="GstElementFactory*"/>
-        </return-value>
-      </method>
-      <method name="implements_interface"
-              c:identifier="gst_element_implements_interface"
-              doc="Test whether the given element implements a certain interface of type
-iface_type, and test whether it is supported for this specific instance.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="iface_type"
-                     transfer-ownership="none"
-                     doc="type of the interface which we want to be implemented">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="create_all_pads"
-              c:identifier="gst_element_create_all_pads"
-              doc="Creates a pad for each pad template that is always available.
-This function is only useful during object intialization of
-subclasses of #GstElement.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_compatible_pad"
-              c:identifier="gst_element_get_compatible_pad"
-              doc="Looks for an unlinked pad to which the given pad can link. It is not
-guaranteed that linking the pads will work, though it should work in most
-cases.
-found. gst_object_unref() after usage.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_compatible_pad_template"
-              c:identifier="gst_element_get_compatible_pad_template"
-              doc="Retrieves a pad template from @element that is compatible with @compattempl.
-Pads from compatible templates can be linked together.
-unreferencing is necessary.">
-        <return-value transfer-ownership="full">
-          <type name="PadTemplate" c:type="GstPadTemplate*"/>
-        </return-value>
-        <parameters>
-          <parameter name="compattempl" transfer-ownership="none">
-            <type name="PadTemplate" c:type="GstPadTemplate*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="link"
-              c:identifier="gst_element_link"
-              doc="Links @src to @dest. The link must be from source to
-destination; the other direction will not be tried. The function looks for
-existing pads that aren&apos;t linked yet. It will request new pads if necessary.
-Such pads need to be released manualy when unlinking.
-If multiple links are possible, only one is established.
-Make sure you have added your elements to a bin or pipeline with
-gst_bin_add() before trying to link them.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="dest" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="link_many"
-              c:identifier="gst_element_link_many"
-              doc="Chain together a series of elements. Uses gst_element_link().
-Make sure you have added your elements to a bin or pipeline with
-gst_bin_add() before trying to link them.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="element_2" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="link_filtered"
-              c:identifier="gst_element_link_filtered"
-              doc="Links @src to @dest using the given caps as filtercaps.
-The link must be from source to
-destination; the other direction will not be tried. The function looks for
-existing pads that aren&apos;t linked yet. It will request new pads if necessary.
-If multiple links are possible, only one is established.
-Make sure you have added your elements to a bin or pipeline with
-gst_bin_add() before trying to link them.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="dest" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter name="filter" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="unlink"
-              c:identifier="gst_element_unlink"
-              doc="Unlinks all source pads of the source element with all sink pads
-of the sink element to which they are linked.
-If the link has been made using gst_element_link(), it could have created an
-requestpad, which has to be released using gst_element_release_request_pad().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="dest" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="unlink_many"
-              c:identifier="gst_element_unlink_many"
-              doc="Unlinks a series of elements. Uses gst_element_unlink().">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="element_2" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="link_pads"
-              c:identifier="gst_element_link_pads"
-              doc="or NULL for any pad.
-Links the two named pads of the source and destination elements.
-Side effect is that if one of the pads has no parent, it becomes a
-child of the parent of the other element.  If they have different
-parents, the link fails.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="srcpadname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="dest" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter name="destpadname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="unlink_pads"
-              c:identifier="gst_element_unlink_pads"
-              doc="Unlinks the two named pads of the source and destination elements.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="srcpadname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="dest" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter name="destpadname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="link_pads_filtered"
-              c:identifier="gst_element_link_pads_filtered"
-              doc="Links the two named pads of the source and destination elements. Side effect
-is that if one of the pads has no parent, it becomes a child of the parent of
-the other element. If they have different parents, the link fails. If @caps
-is not #NULL, makes sure that the caps of the link is a subset of @caps.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="srcpadname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="dest" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter name="destpadname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="filter" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="seek_simple" c:identifier="gst_element_seek_simple">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="seek_flags" transfer-ownership="none">
-            <type name="SeekFlags" c:type="GstSeekFlags"/>
-          </parameter>
-          <parameter name="seek_pos" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_position"
-              c:identifier="gst_element_query_position"
-              doc="On return contains the #GstFormat used.
-Queries an element for the stream position.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="cur" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_duration"
-              c:identifier="gst_element_query_duration"
-              doc="On return contains the #GstFormat used.
-Queries an element for the total stream duration.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format"
-                     direction="inout"
-                     transfer-ownership="full"
-                     doc="a pointer to the #GstFormat asked for.">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="duration"
-                     direction="out"
-                     transfer-ownership="full"
-                     doc="A location in which to store the total duration, or NULL.">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_convert"
-              c:identifier="gst_element_query_convert"
-              doc="Queries an element to convert @src_val in @src_format to @dest_format.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="src_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="src_val" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="dest_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="dest_val" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="found_tags_for_pad"
-              c:identifier="gst_element_found_tags_for_pad"
-              doc="Posts a message to the bus that new tags were found and pushes the
-tags as event. Takes ownership of the @list.
-This is a utility method for elements. Applications should use the
-#GstTagSetter interface.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-          <parameter name="list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="found_tags"
-              c:identifier="gst_element_found_tags"
-              doc="Posts a message to the bus that new tags were found, and pushes an event
-to all sourcepads. Takes ownership of the @list.
-This is a utility method for elements. Applications should use the
-#GstTagSetter interface.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="state_lock">
-        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
-      </field>
-      <field name="state_cond">
-        <type name="GLib.Cond" c:type="GCond*"/>
-      </field>
-      <field name="state_cookie">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="current_state">
-        <type name="State" c:type="GstState"/>
-      </field>
-      <field name="next_state">
-        <type name="State" c:type="GstState"/>
-      </field>
-      <field name="pending_state">
-        <type name="State" c:type="GstState"/>
-      </field>
-      <field name="last_return">
-        <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-      </field>
-      <field name="bus">
-        <type name="Bus" c:type="GstBus*"/>
-      </field>
-      <field name="clock">
-        <type name="Clock" c:type="GstClock*"/>
-      </field>
-      <field name="base_time">
-        <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
-      </field>
-      <field name="numpads">
-        <type name="uint16" c:type="guint16"/>
-      </field>
-      <field name="pads">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="numsrcpads">
-        <type name="uint16" c:type="guint16"/>
-      </field>
-      <field name="srcpads">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="numsinkpads">
-        <type name="uint16" c:type="guint16"/>
-      </field>
-      <field name="sinkpads">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="pads_cookie">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <union name="abidata" c:type="abidata">
-        <record name="ABI" c:type="ABI">
-          <field name="target_state" writable="1">
-            <type name="State" c:type="GstState"/>
-          </field>
-          <field name="start_time" writable="1">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </field>
-        </record>
-        <field name="_gst_reserved" writable="1">
-          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-            <type name="any"/>
-          </array>
-        </field>
-      </union>
-      <glib:signal name="no-more-pads"
-                   doc="This signals that the element will not generate more dynamic pads.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </glib:signal>
-      <glib:signal name="pad-added"
-                   doc="a new #GstPad has been added to the element.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="new_pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="pad-removed"
-                   doc="a #GstPad has been removed from the element">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="old_pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="ElementClass"
-            c:type="GstElementClass"
-            glib:is-gtype-struct-for="Element"
-            doc="GStreamer element class. Override the vmethods to implement the element
-functionality.">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="details">
-        <type name="ElementDetails" c:type="GstElementDetails"/>
-      </field>
-      <field name="elementfactory">
-        <type name="ElementFactory" c:type="GstElementFactory*"/>
-      </field>
-      <field name="padtemplates">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="numpadtemplates">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="pad_templ_cookie">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="pad_added">
-        <callback name="pad_added" c:type="pad_added">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="pad_removed">
-        <callback name="pad_removed" c:type="pad_removed">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="no_more_pads">
-        <callback name="no_more_pads" c:type="no_more_pads">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="request_new_pad">
-        <callback name="request_new_pad" c:type="request_new_pad">
-          <return-value transfer-ownership="full">
-            <type name="Pad" c:type="GstPad*"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="templ" transfer-ownership="none">
-              <type name="PadTemplate" c:type="GstPadTemplate*"/>
-            </parameter>
-            <parameter name="name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="release_pad">
-        <callback name="release_pad" c:type="release_pad">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_state">
-        <callback name="get_state" c:type="get_state">
-          <return-value transfer-ownership="full">
-            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="state" transfer-ownership="none">
-              <type name="State" c:type="GstState*"/>
-            </parameter>
-            <parameter name="pending" transfer-ownership="none">
-              <type name="State" c:type="GstState*"/>
-            </parameter>
-            <parameter name="timeout" transfer-ownership="none">
-              <type name="ClockTime" c:type="GstClockTime"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="set_state">
-        <callback name="set_state" c:type="set_state">
-          <return-value transfer-ownership="full">
-            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="state" transfer-ownership="none">
-              <type name="State" c:type="GstState"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="change_state">
-        <callback name="change_state" c:type="change_state">
-          <return-value transfer-ownership="full">
-            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="transition" transfer-ownership="none">
-              <type name="StateChange" c:type="GstStateChange"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="set_bus">
-        <callback name="set_bus" c:type="set_bus">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="bus" transfer-ownership="none">
-              <type name="Bus" c:type="GstBus*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="provide_clock">
-        <callback name="provide_clock" c:type="provide_clock">
-          <return-value transfer-ownership="full">
-            <type name="Clock" c:type="GstClock*"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="set_clock">
-        <callback name="set_clock" c:type="set_clock">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="clock" transfer-ownership="none">
-              <type name="Clock" c:type="GstClock*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_index">
-        <callback name="get_index" c:type="get_index">
-          <return-value transfer-ownership="full">
-            <type name="Index" c:type="GstIndex*"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="set_index">
-        <callback name="set_index" c:type="set_index">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="index" transfer-ownership="none">
-              <type name="Index" c:type="GstIndex*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="send_event">
-        <callback name="send_event" c:type="send_event">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="event" transfer-ownership="none">
-              <type name="Event" c:type="GstEvent*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_query_types">
-        <callback name="get_query_types" c:type="get_query_types">
-          <return-value transfer-ownership="none">
-            <type name="QueryType" c:type="GstQueryType*"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="query">
-        <callback name="query" c:type="query">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="element" transfer-ownership="none">
-              <type name="Element" c:type="GstElement*"/>
-            </parameter>
-            <parameter name="query" transfer-ownership="none">
-              <type name="Query" c:type="GstQuery*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <method name="add_pad_template"
-              c:identifier="gst_element_class_add_pad_template"
-              doc="Adds a padtemplate to an element class. This is mainly used in the _base_init
-functions of classes.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="templ" transfer-ownership="none">
-            <type name="PadTemplate" c:type="GstPadTemplate*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pad_template"
-              c:identifier="gst_element_class_get_pad_template"
-              doc="Retrieves a padtemplate from @element_class with the given name.
-&lt;note&gt;If you use this function in the #GInstanceInitFunc of an object class
-that has subclasses, make sure to pass the g_class parameter of the
-#GInstanceInitFunc here.&lt;/note&gt;
-No unreferencing is necessary.">
-        <return-value transfer-ownership="full">
-          <type name="PadTemplate" c:type="GstPadTemplate*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pad_template_list"
-              c:identifier="gst_element_class_get_pad_template_list"
-              doc="Retrieves a list of the pad templates associated with @element_class. The
-list must not be modified by the calling code.
-&lt;note&gt;If you use this function in the #GInstanceInitFunc of an object class
-that has subclasses, make sure to pass the g_class parameter of the
-#GInstanceInitFunc here.&lt;/note&gt;">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <method name="set_details"
-              c:identifier="gst_element_class_set_details"
-              doc="Sets the detailed information for a #GstElementClass.
-&lt;note&gt;This function is for use in _base_init functions only.&lt;/note&gt;
-The @details are copied."
-              deprecated="Use gst_element_class_set_details_simple() instead.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="details" transfer-ownership="none">
-            <type name="ElementDetails" c:type="GstElementDetails*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_details_simple"
-              c:identifier="gst_element_class_set_details_simple"
-              doc="separated with slashes (&apos;/&apos;). See draft-klass.txt of the design docs
-Sets the detailed information for a #GstElementClass. Simpler version of
-gst_element_class_set_details() that generates less linker overhead.
-&lt;note&gt;This function is for use in _base_init functions only.&lt;/note&gt;
-The detail parameter strings are copied into the #GstElementDetails for
-the element class."
-              version="0.10.14">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="longname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="classification" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="description" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="author"
-                     transfer-ownership="none"
-                     doc="Use \n to separate">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="install_std_props"
-              c:identifier="gst_element_class_install_std_props"
-              doc="in a NULL terminated
-further &apos;name&apos;, &apos;id&apos;, &apos;flags&apos; triplets and terminated by NULL.
-Adds a list of standardized properties with types to the @klass.
-the id is for the property switch in your get_prop method, and
-the flags determine readability / writeability.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="first_name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="ElementDetails"
-            c:type="GstElementDetails"
-            doc="separated with slashes (&apos;/&apos;). See draft-klass.txt of the design docs
-for more details and common types
-This struct defines the public information about a #GstElement. It contains
-meta-data about the element that is mostly for the benefit of editors.
-The @klass member can be used by applications to filter elements based
-on functionality.">
-      <field name="longname" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="klass" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="description" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="author" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <class name="ElementFactory"
-           c:type="GstElementFactory"
-           doc="The opaque #GstElementFactory data structure."
-           parent="PluginFeature"
-           glib:type-name="GstElementFactory"
-           glib:get-type="gst_element_factory_get_type"
-           glib:type-struct="ElementFactoryClass">
-      <function name="find"
-                c:identifier="gst_element_factory_find"
-                doc="Search for an element factory of the given name. Refs the returned
-element factory; caller is responsible for unreffing.">
-        <return-value transfer-ownership="full">
-          <type name="ElementFactory" c:type="GstElementFactory*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="make"
-                c:identifier="gst_element_factory_make"
-                doc="Create a new element of the type defined by the given element factory.
-If name is NULL, then the element will receive a guaranteed unique name,
-consisting of the element factory name and a number.
-If name is given, it will be given the name supplied.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="factoryname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="get_element_type"
-              c:identifier="gst_element_factory_get_element_type"
-              doc="Get the #GType for elements managed by this factory. The type can
-only be retrieved if the element factory is loaded, which can be
-assured with gst_plugin_feature_load().
-the factory is not loaded.">
-        <return-value transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </return-value>
-      </method>
-      <method name="get_longname"
-              c:identifier="gst_element_factory_get_longname"
-              doc="Gets the longname for this factory">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_klass"
-              c:identifier="gst_element_factory_get_klass"
-              doc="Gets the class for this factory.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_description"
-              c:identifier="gst_element_factory_get_description"
-              doc="Gets the description for this factory.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_author"
-              c:identifier="gst_element_factory_get_author"
-              doc="Gets the author for this factory.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_num_pad_templates"
-              c:identifier="gst_element_factory_get_num_pad_templates"
-              doc="Gets the number of pad_templates in this factory.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="get_static_pad_templates"
-              c:identifier="gst_element_factory_get_static_pad_templates"
-              doc="Gets the #GList of #GstStaticPadTemplate for this factory.">
-        <return-value transfer-ownership="none">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <method name="get_uri_type"
-              c:identifier="gst_element_factory_get_uri_type"
-              doc="Gets the type of URIs the element supports or #GST_URI_UNKNOWN if none.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-      </method>
-      <method name="get_uri_protocols"
-              c:identifier="gst_element_factory_get_uri_protocols"
-              doc="Gets a NULL-terminated array of protocols this element supports or NULL if
-no protocols are supported. You may not change the contents of the returned
-array, as it is still owned by the element factory. Use g_strdupv() to
-make a copy of the protocol string array if you need to.">
-        <return-value transfer-ownership="full">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </method>
-      <method name="has_interface"
-              c:identifier="gst_element_factory_has_interface"
-              doc="Check if @factory implements the interface with name @interfacename."
-              version="0.10.14">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="interfacename" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="create"
-              c:identifier="gst_element_factory_create"
-              doc="Create a new element of the type defined by the given elementfactory.
-It will be given the name supplied, since all elements require a name as
-their first argument.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="can_src_caps"
-              c:identifier="gst_element_factory_can_src_caps"
-              doc="Checks if the factory can source the given capability.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="can_sink_caps"
-              c:identifier="gst_element_factory_can_sink_caps"
-              doc="Checks if the factory can sink the given capability.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <field name="parent">
-        <type name="PluginFeature" c:type="GstPluginFeature"/>
-      </field>
-      <field name="type">
-        <type name="GType" c:type="GType"/>
-      </field>
-      <field name="details">
-        <type name="ElementDetails" c:type="GstElementDetails"/>
-      </field>
-      <field name="staticpadtemplates">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="numpadtemplates">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="uri_type">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="uri_protocols">
-        <type name="utf8" c:type="gchar**"/>
-      </field>
-      <field name="interfaces">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="ElementFactoryClass"
-            c:type="GstElementFactoryClass"
-            glib:is-gtype-struct-for="ElementFactory">
-      <field name="parent_class">
-        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="ElementFlags"
-              doc="gst_bin_remove() on a child already being removed immediately returns FALSE
-The standard flags that an element may have."
-              c:type="GstElementFlags">
-      <member name="locked_state"
-              value="16"
-              c:identifier="GST_ELEMENT_LOCKED_STATE"/>
-      <member name="is_sink" value="32" c:identifier="GST_ELEMENT_IS_SINK"/>
-      <member name="unparenting"
-              value="64"
-              c:identifier="GST_ELEMENT_UNPARENTING"/>
-      <member name="flag_last"
-              value="1048576"
-              c:identifier="GST_ELEMENT_FLAG_LAST"/>
-    </bitfield>
-    <record name="Event" c:type="GstEvent" doc="A #GstEvent.">
-      <field name="mini_object" writable="1">
-        <type name="MiniObject" c:type="GstMiniObject"/>
-      </field>
-      <field name="type" writable="1">
-        <type name="EventType" c:type="GstEventType"/>
-      </field>
-      <field name="timestamp" writable="1">
-        <type name="uint64" c:type="guint64"/>
-      </field>
-      <field name="src" writable="1">
-        <type name="Object" c:type="GstObject*"/>
-      </field>
-      <field name="structure" writable="1">
-        <type name="Structure" c:type="GstStructure*"/>
-      </field>
-      <union name="abidata" c:type="abidata">
-        <field name="seqnum" writable="1">
-          <type name="uint32" c:type="guint32"/>
-        </field>
-        <field name="_gst_reserved" writable="1">
-          <type name="any" c:type="gpointer"/>
-        </field>
-      </union>
-      <constructor name="new_custom"
-                   c:identifier="gst_event_new_custom"
-                   doc="the structure.
-Create a new custom-typed event. This can be used for anything not
-handled by other event-specific functions to pass an event to another
-element.
-Make sure to allocate an event type with the #GST_EVENT_MAKE_TYPE macro,
-assigning a free number and filling in the correct direction and
-serialization flags.
-New custom events can also be created by subclassing the event type if
-needed.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="EventType" c:type="GstEventType"/>
-          </parameter>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_flush_start"
-                   c:identifier="gst_event_new_flush_start"
-                   doc="Allocate a new flush start event. The flush start event can be sent
-upstream and downstream and travels out-of-bounds with the dataflow.
-It marks pads as being flushing and will make them return
-#GST_FLOW_WRONG_STATE when used for data flow with gst_pad_push(),
-gst_pad_chain(), gst_pad_alloc_buffer(), gst_pad_get_range() and
-gst_pad_pull_range(). Any event (except a #GST_EVENT_FLUSH_STOP) received
-on a flushing pad will return %FALSE immediately.
-Elements should unlock any blocking functions and exit their streaming
-functions as fast as possible when this event is received.
-This event is typically generated after a seek to flush out all queued data
-in the pipeline so that the new media is played as soon as possible.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_flush_stop"
-                   c:identifier="gst_event_new_flush_stop"
-                   doc="Allocate a new flush stop event. The flush stop event can be sent
-upstream and downstream and travels serialized with the dataflow.
-It is typically sent after sending a FLUSH_START event to make the
-pads accept data again.
-Elements can process this event synchronized with the dataflow since
-the preceeding FLUSH_START event stopped the dataflow.
-This event is typically generated to complete a seek and to resume
-dataflow.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_eos"
-                   c:identifier="gst_event_new_eos"
-                   doc="Create a new EOS event. The eos event can only travel downstream
-synchronized with the buffer flow. Elements that receive the EOS
-event on a pad can return #GST_FLOW_UNEXPECTED as a #GstFlowReturn
-when data after the EOS event arrives.
-The EOS event will travel down to the sink elements in the pipeline
-which will then post the #GST_MESSAGE_EOS on the bus after they have
-finished playing any buffered data.
-When all sinks have posted an EOS message, an EOS message is
-forwarded to the application.
-The EOS event itself will not cause any state transitions of the pipeline.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_new_segment"
-                   c:identifier="gst_event_new_new_segment"
-                   doc="Allocate a new newsegment event with the given format/values tripplets
-This method calls gst_event_new_new_segment_full() passing a default
-value of 1.0 for applied_rate">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="update" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_new_segment_full"
-                   c:identifier="gst_event_new_new_segment_full"
-                   doc="Allocate a new newsegment event with the given format/values triplets.
-The newsegment event marks the range of buffers to be processed. All
-data not within the segment range is not to be processed. This can be
-used intelligently by plugins to apply more efficient methods of skipping
-unneeded data. The valid range is expressed with the @start and @stop
-values.
-The position value of the segment is used in conjunction with the start
-value to convert the buffer timestamps into the stream time. This is
-usually done in sinks to report the current stream_time.
-is a valid @stop given, it must be greater or equal the @start, including
-when the indicated playback @rate is &lt; 0.
-The @applied_rate value provides information about any rate adjustment that
-has already been made to the timestamps and content on the buffers of the
-stream. (@rate * @applied_rate) should always equal the rate that has been
-requested for playback. For example, if an element has an input segment
-with intended playback @rate of 2.0 and applied_rate of 1.0, it can adjust
-incoming timestamps and buffer content by half and output a newsegment event
-with @rate of 1.0 and @applied_rate of 2.0
-After a newsegment event, the buffer stream time is calculated with:
-position + (TIMESTAMP(buf) - start) * ABS (rate * applied_rate)"
-                   version="0.10.6">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="update" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="applied_rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_tag"
-                   c:identifier="gst_event_new_tag"
-                   doc="Generates a metadata tag event from the given @taglist.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="taglist" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_buffer_size"
-                   c:identifier="gst_event_new_buffer_size"
-                   doc="Create a new buffersize event. The event is sent downstream and notifies
-elements that they should provide a buffer of the specified dimensions.
-When the @async flag is set, a thread boundary is prefered.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="minsize" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="maxsize" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="async" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_qos"
-                   c:identifier="gst_event_new_qos"
-                   doc="Allocate a new qos event with the given values.
-The QOS event is generated in an element that wants an upstream
-element to either reduce or increase its rate because of
-high/low CPU load or other resource usage such as network performance.
-Typically sinks generate these events for each buffer they receive.
-element that generated the QoS event (usually the sink). The value is
-generally computed based on more long term statistics about the streams
-timestamps compared to the clock.
-A value &lt; 1.0 indicates that the upstream element is producing data faster
-than real-time. A value &gt; 1.0 indicates that the upstream element is not
-producing data fast enough. 1.0 is the ideal @proportion value. The
-proportion value can safely be used to lower or increase the quality of
-the element.
-buffer that caused the element to generate the QOS event. A negative value
-means that the buffer with @timestamp arrived in time. A positive value
-indicates how late the buffer with @timestamp was.
-to generate the QOS event. It is expressed in running time and thus an ever
-increasing value.
-The upstream element can use the @diff and @timestamp values to decide
-whether to process more buffers. For possitive @diff, all buffers with
-timestamp &lt;= @timestamp + @diff will certainly arrive late in the sink
-as well. A (negative) @diff value so that @timestamp + @diff would yield a
-result smaller than 0 is not allowed.
-The application can use general event probes to intercept the QoS
-event and implement custom application specific QoS handling.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="proportion" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="diff" transfer-ownership="none">
-            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
-          </parameter>
-          <parameter name="timestamp" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_seek"
-                   c:identifier="gst_event_new_seek"
-                   doc="Allocate a new seek event with the given parameters.
-The seek event configures playback of the pipeline between @start to @stop
-at the speed given in @rate, also called a playback segment.
-The @start and @stop values are expressed in @format.
-A @rate of 1.0 means normal playback rate, 2.0 means double speed.
-Negatives values means backwards playback. A value of 0.0 for the
-rate is not allowed and should be accomplished instead by PAUSING the
-pipeline.
-A pipeline has a default playback segment configured with a start
-position of 0, a stop position of -1 and a rate of 1.0. The currently
-configured playback segment can be queried with #GST_QUERY_SEGMENT.
-start and stop fields in playback segment. Adjustments can be made relative
-or absolute to the last configured values. A type of #GST_SEEK_TYPE_NONE
-means that the position should not be updated.
-When the rate is positive and @start has been updated, playback will start
-from the newly configured start position.
-For negative rates, playback will start from the newly configured stop
-position (if any). If the stop position if updated, it must be different from
--1 for negative rates.
-It is not possible to seek relative to the current playback position, to do
-this, PAUSE the pipeline, query the current playback position with
-#GST_QUERY_POSITION and update the playback segment current position with a
-#GST_SEEK_TYPE_SET to the desired position.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="SeekFlags" c:type="GstSeekFlags"/>
-          </parameter>
-          <parameter name="start_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_navigation"
-                   c:identifier="gst_event_new_navigation"
-                   doc="structure.
-Create a new navigation event from the given description.">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_latency"
-                   c:identifier="gst_event_new_latency"
-                   doc="Create a new latency event. The event is sent upstream from the sinks and
-notifies elements that they should add an additional @latency to the
-running time before synchronising against the clock.
-The latency is mostly used in live sinks and is always expressed in
-the time format."
-                   version="0.10.12">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="latency" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_step"
-                   c:identifier="gst_event_new_step"
-                   doc="Create a new step event. The purpose of the step event is to instruct a sink
-to skip @amount (expressed in @format) of media. It can be used to implement
-stepping through the video frame by frame or for doing fast trick modes.
-A rate of &lt;= 0.0 is not allowed, pause the pipeline or reverse the playback
-direction of the pipeline to get the same effect.
-The @flush flag will clear any pending data in the pipeline before starting
-the step operation.
-The @intermediate flag instructs the pipeline that this step operation is
-part of a larger step operation."
-                   version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="amount" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="flush" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="intermediate" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_sink_message"
-                   c:identifier="gst_event_new_sink_message"
-                   doc="Create a new sink-message event. The purpose of the sink-message event is
-to instruct a sink to post the message contained in the event synchronized
-with the stream."
-                   version="0.10.26">
-        <return-value transfer-ownership="full">
-          <type name="Event" c:type="GstEvent*"/>
-        </return-value>
-        <parameters>
-          <parameter name="msg" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="get_structure"
-              c:identifier="gst_event_get_structure"
-              doc="Access the structure of the event.
-owned by the event, which means that you should not free it and
-that the pointer becomes invalid when you free the event.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-      </method>
-      <method name="has_name"
-              c:identifier="gst_event_has_name"
-              doc="Checks if @event has the given @name. This function is usually used to
-check the name of a custom event."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_seqnum"
-              c:identifier="gst_event_get_seqnum"
-              doc="Retrieve the sequence number of a event.
-Events have ever-incrementing sequence numbers, which may also be set
-explicitly via gst_event_set_seqnum(). Sequence numbers are typically used to
-indicate that a event corresponds to some other set of events or messages,
-for example an EOS event corresponding to a SEEK event. It is considered good
-practice to make this correspondence when possible, though it is not
-required.
-Note that events and messages share the same sequence number incrementor;
-two events or messages will never not have the same sequence number unless
-that correspondence was made explicitly.
-MT safe."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="uint32" c:type="guint32"/>
-        </return-value>
-      </method>
-      <method name="set_seqnum"
-              c:identifier="gst_event_set_seqnum"
-              doc="Set the sequence number of a event.
-This function might be called by the creator of a event to indicate that the
-event relates to other events or messages. See gst_event_get_seqnum() for
-more information.
-MT safe."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="seqnum" transfer-ownership="none">
-            <type name="uint32" c:type="guint32"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_new_segment"
-              c:identifier="gst_event_parse_new_segment"
-              doc="Get the update flag, rate, format, start, stop and position in the
-newsegment event. In general, gst_event_parse_new_segment_full() should
-be used instead of this, to also retrieve the applied_rate value of the
-segment. See gst_event_new_new_segment_full() for a full description
-of the newsegment event.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="update" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="start" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="stop" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="position" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_new_segment_full"
-              c:identifier="gst_event_parse_new_segment_full"
-              doc="Get the update, rate, applied_rate, format, start, stop and
-position in the newsegment event. See gst_event_new_new_segment_full()
-for a full description of the newsegment event."
-              version="0.10.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="update" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="applied_rate"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="start" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="stop" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="position" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_tag"
-              c:identifier="gst_event_parse_tag"
-              doc="Parses a tag @event and stores the results in the given @taglist location.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="taglist" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_buffer_size"
-              c:identifier="gst_event_parse_buffer_size"
-              doc="Get the format, minsize, maxsize and async-flag in the buffersize event.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="minsize" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="maxsize" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="async" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_qos"
-              c:identifier="gst_event_parse_qos"
-              doc="Get the proportion, diff and timestamp in the qos event. See
-gst_event_new_qos() for more information about the different QoS values.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="proportion"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="diff" transfer-ownership="none">
-            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
-          </parameter>
-          <parameter name="timestamp" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_seek"
-              c:identifier="gst_event_parse_seek"
-              doc="Parses a seek @event and stores the results in the given result locations.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="SeekFlags" c:type="GstSeekFlags*"/>
-          </parameter>
-          <parameter name="start_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType*"/>
-          </parameter>
-          <parameter name="start" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="stop_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType*"/>
-          </parameter>
-          <parameter name="stop" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_latency"
-              c:identifier="gst_event_parse_latency"
-              doc="Get the latency in the latency event."
-              version="0.10.12">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="latency" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_step"
-              c:identifier="gst_event_parse_step"
-              doc="Parse the step event."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="amount" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="flush" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="intermediate"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_sink_message"
-              c:identifier="gst_event_parse_sink_message"
-              doc="Parse the sink-message event. Unref @msg after usage."
-              version="0.10.26">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="msg" transfer-ownership="none">
-            <type name="Message" c:type="GstMessage**"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="EventClass" c:type="GstEventClass">
-      <field name="mini_object_class" writable="1">
-        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="EventType"
-              doc="without a NEWSEGMENT event.
-send messages that should be emitted in sync with
-rendering.
-that the downstream elements are being starved of or
-flooded with data.
-user requests, such as mouse or keyboard movements,
-to upstream elements.
-data flow.
-In-band when travelling downstream.
-#GstEventType lists the standard event types that can be sent in a pipeline.
-The custom event types can be used for private messages between elements
-that can&apos;t be expressed using normal
-GStreamer buffer passing semantics. Custom events carry an arbitrary
-#GstStructure.
-Specific custom events are distinguished by the name of the structure."
-              c:type="GstEventType">
-      <member name="unknown" value="0" c:identifier="GST_EVENT_UNKNOWN"/>
-      <member name="flush_start"
-              value="19"
-              c:identifier="GST_EVENT_FLUSH_START"/>
-      <member name="flush_stop"
-              value="39"
-              c:identifier="GST_EVENT_FLUSH_STOP"/>
-      <member name="eos" value="86" c:identifier="GST_EVENT_EOS"/>
-      <member name="newsegment"
-              value="102"
-              c:identifier="GST_EVENT_NEWSEGMENT"/>
-      <member name="tag" value="118" c:identifier="GST_EVENT_TAG"/>
-      <member name="buffersize"
-              value="134"
-              c:identifier="GST_EVENT_BUFFERSIZE"/>
-      <member name="sink_message"
-              value="150"
-              c:identifier="GST_EVENT_SINK_MESSAGE"/>
-      <member name="qos" value="241" c:identifier="GST_EVENT_QOS"/>
-      <member name="seek" value="257" c:identifier="GST_EVENT_SEEK"/>
-      <member name="navigation"
-              value="273"
-              c:identifier="GST_EVENT_NAVIGATION"/>
-      <member name="latency" value="289" c:identifier="GST_EVENT_LATENCY"/>
-      <member name="step" value="305" c:identifier="GST_EVENT_STEP"/>
-      <member name="custom_upstream"
-              value="513"
-              c:identifier="GST_EVENT_CUSTOM_UPSTREAM"/>
-      <member name="custom_downstream"
-              value="518"
-              c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM"/>
-      <member name="custom_downstream_oob"
-              value="514"
-              c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM_OOB"/>
-      <member name="custom_both"
-              value="519"
-              c:identifier="GST_EVENT_CUSTOM_BOTH"/>
-      <member name="custom_both_oob"
-              value="515"
-              c:identifier="GST_EVENT_CUSTOM_BOTH_OOB"/>
-    </bitfield>
-    <bitfield name="EventTypeFlags"
-              doc="flow.
-#GstEventTypeFlags indicate the aspects of the different #GstEventType
-values. You can get the type flags of a #GstEventType with the
-gst_event_type_get_flags() function."
-              c:type="GstEventTypeFlags">
-      <member name="upstream"
-              value="1"
-              c:identifier="GST_EVENT_TYPE_UPSTREAM"/>
-      <member name="downstream"
-              value="2"
-              c:identifier="GST_EVENT_TYPE_DOWNSTREAM"/>
-      <member name="serialized"
-              value="4"
-              c:identifier="GST_EVENT_TYPE_SERIALIZED"/>
-    </bitfield>
-    <constant name="FOURCC_FORMAT" value="c%c%c%c">
-      <type name="utf8"/>
-    </constant>
-    <callback name="FilterFunc"
-              c:type="GstFilterFunc"
-              doc="Function prototype for a filter callback taht can be use in gst_filter_run().
-The function should apply its filtering to @obj. Additional data passed to
-gst_filter_run() are in @data.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="obj" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="FlowReturn"
-                 doc="sent yet) (unused/unimplemented).
-this error should post an error message with more
-details.
-this (and higher) to define custom success
-codes. Since 0.10.7.
-custom success code to this to avoid compiler
-warnings). Since 0.10.29.
-this (and lower) to define custom error codes.
-Since 0.10.7.
-custom error code to this to avoid compiler
-warnings). Since 0.10.29.
-The result of passing data to a pad.
-Note that the custom return values should not be exposed outside of the
-element scope and are available since 0.10.7."
-                 c:type="GstFlowReturn">
-      <member name="custom_success_2"
-              value="102"
-              c:identifier="GST_FLOW_CUSTOM_SUCCESS_2"/>
-      <member name="custom_success_1"
-              value="101"
-              c:identifier="GST_FLOW_CUSTOM_SUCCESS_1"/>
-      <member name="custom_success"
-              value="100"
-              c:identifier="GST_FLOW_CUSTOM_SUCCESS"/>
-      <member name="resend" value="1" c:identifier="GST_FLOW_RESEND"/>
-      <member name="ok" value="0" c:identifier="GST_FLOW_OK"/>
-      <member name="not_linked" value="-1" c:identifier="GST_FLOW_NOT_LINKED"/>
-      <member name="wrong_state"
-              value="-2"
-              c:identifier="GST_FLOW_WRONG_STATE"/>
-      <member name="unexpected" value="-3" c:identifier="GST_FLOW_UNEXPECTED"/>
-      <member name="not_negotiated"
-              value="-4"
-              c:identifier="GST_FLOW_NOT_NEGOTIATED"/>
-      <member name="error" value="-5" c:identifier="GST_FLOW_ERROR"/>
-      <member name="not_supported"
-              value="-6"
-              c:identifier="GST_FLOW_NOT_SUPPORTED"/>
-      <member name="custom_error"
-              value="-100"
-              c:identifier="GST_FLOW_CUSTOM_ERROR"/>
-      <member name="custom_error_1"
-              value="-101"
-              c:identifier="GST_FLOW_CUSTOM_ERROR_1"/>
-      <member name="custom_error_2"
-              value="-102"
-              c:identifier="GST_FLOW_CUSTOM_ERROR_2"/>
-    </enumeration>
-    <enumeration name="Format"
-                 doc="samples for raw audio, frames/fields for raw video (some, but not all,
-elements support this; use @GST_FORMAT_TIME if you don&apos;t have a good
-reason to query for samples/frames)
-May 2009)
-this as of May 2009)
-Standard predefined formats"
-                 c:type="GstFormat">
-      <member name="undefined" value="0" c:identifier="GST_FORMAT_UNDEFINED"/>
-      <member name="default" value="1" c:identifier="GST_FORMAT_DEFAULT"/>
-      <member name="bytes" value="2" c:identifier="GST_FORMAT_BYTES"/>
-      <member name="time" value="3" c:identifier="GST_FORMAT_TIME"/>
-      <member name="buffers" value="4" c:identifier="GST_FORMAT_BUFFERS"/>
-      <member name="percent" value="5" c:identifier="GST_FORMAT_PERCENT"/>
-    </enumeration>
-    <record name="FormatDefinition"
-            c:type="GstFormatDefinition"
-            doc="A format definition">
-      <field name="value" writable="1">
-        <type name="Format" c:type="GstFormat"/>
-      </field>
-      <field name="nick" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="description" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="quark" writable="1">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </field>
-    </record>
-    <glib:boxed c:type="GstGError"
-                glib:name="GError"
-                glib:type-name="GstGError"
-                glib:get-type="gst_g_error_get_type">
-    </glib:boxed>
-    <class name="GhostPad"
-           c:type="GstGhostPad"
-           doc="Opaque #GstGhostPad structure."
-           parent="ProxyPad"
-           glib:type-name="GstGhostPad"
-           glib:get-type="gst_ghost_pad_get_type"
-           glib:type-struct="GhostPadClass">
-      <constructor name="new"
-                   c:identifier="gst_ghost_pad_new"
-                   doc="Create a new ghostpad with @target as the target. The direction will be taken
-from the target pad. @target must be unlinked.
-Will ref the target.">
-        <return-value transfer-ownership="full">
-          <type name="GhostPad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="target" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_no_target"
-                   c:identifier="gst_ghost_pad_new_no_target"
-                   doc="Create a new ghostpad without a target with the given direction.
-A target can be set on the ghostpad later with the
-gst_ghost_pad_set_target() function.
-The created ghostpad will not have a padtemplate.">
-        <return-value transfer-ownership="full">
-          <type name="GhostPad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="dir" transfer-ownership="none">
-            <type name="PadDirection" c:type="GstPadDirection"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_from_template"
-                   c:identifier="gst_ghost_pad_new_from_template"
-                   doc="Create a new ghostpad with @target as the target. The direction will be taken
-from the target pad. The template used on the ghostpad will be @template.
-Will ref the target."
-                   version="0.10.10">
-        <return-value transfer-ownership="full">
-          <type name="GhostPad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="target" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-          <parameter name="templ" transfer-ownership="none">
-            <type name="PadTemplate" c:type="GstPadTemplate*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_no_target_from_template"
-                   c:identifier="gst_ghost_pad_new_no_target_from_template"
-                   doc="Create a new ghostpad based on @templ, without setting a target. The
-direction will be taken from the @templ."
-                   version="0.10.10">
-        <return-value transfer-ownership="full">
-          <type name="GhostPad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="templ" transfer-ownership="none">
-            <type name="PadTemplate" c:type="GstPadTemplate*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="get_target"
-              c:identifier="gst_ghost_pad_get_target"
-              doc="Get the target pad of @gpad. Unref target pad after usage.
-has no target set. Unref target pad after usage.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-      </method>
-      <method name="set_target"
-              c:identifier="gst_ghost_pad_set_target"
-              doc="Set the new target of the ghostpad @gpad. Any existing target
-is unlinked and links to the new target are established. if @newtarget is
-NULL the target will be cleared.
-when the internal pads could not be linked.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="newtarget" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="construct"
-              c:identifier="gst_ghost_pad_construct"
-              doc="Finish initialization of a newly allocated ghost pad.
-This function is most useful in language bindings and when subclassing
-#GstGhostPad; plugin and application developers normally will not call this
-function. Call this function directly after a call to g_object_new
-(GST_TYPE_GHOST_PAD, &quot;direction&quot;, @dir, ..., NULL)."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <field name="pad">
-        <type name="ProxyPad" c:type="GstProxyPad"/>
-      </field>
-      <field name="priv">
-        <type name="GhostPadPrivate" c:type="GstGhostPadPrivate*"/>
-      </field>
-    </class>
-    <record name="GhostPadClass"
-            c:type="GstGhostPadClass"
-            glib:is-gtype-struct-for="GhostPad">
-      <field name="parent_class">
-        <type name="ProxyPadClass" c:type="GstProxyPadClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="GhostPadPrivate" c:type="GstGhostPadPrivate">
-    </record>
-    <constant name="INDEX_ID_INVALID" value="-1">
-      <type name="int"/>
-    </constant>
-    <interface name="ImplementsInterface"
-               c:type="GstImplementsInterface"
-               doc="Opaque #GstImplementsInterface structure."
-               glib:type-name="GstImplementsInterface"
-               glib:get-type="gst_implements_interface_get_type"
-               glib:type-struct="ImplementsInterfaceClass">
-      <prerequisite name="Element"/>
-      <virtual-method name="supported">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="iface_type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-    </interface>
-    <record name="ImplementsInterfaceClass"
-            c:type="GstImplementsInterfaceClass"
-            glib:is-gtype-struct-for="ImplementsInterface">
-      <field name="parent">
-        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
-      </field>
-      <field name="supported">
-        <callback name="supported" c:type="supported">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="iface" transfer-ownership="none">
-              <type name="ImplementsInterface"
-                    c:type="GstImplementsInterface*"/>
-            </parameter>
-            <parameter name="iface_type" transfer-ownership="none">
-              <type name="GType" c:type="GType"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <class name="Index"
-           c:type="GstIndex"
-           doc="Opaque #GstIndex structure."
-           parent="Object"
-           glib:type-name="GstIndex"
-           glib:get-type="gst_index_get_type"
-           glib:type-struct="IndexClass">
-      <constructor name="new"
-                   c:identifier="gst_index_new"
-                   doc="Create a new tileindex object">
-        <return-value transfer-ownership="full">
-          <type name="Index" c:type="GstIndex*"/>
-        </return-value>
-      </constructor>
-      <virtual-method name="get_writer_id">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="writer_id"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="writer_string" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="commit" invoker="commit">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="add_entry">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="entry" transfer-ownership="none">
-            <type name="IndexEntry" c:type="GstIndexEntry*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_assoc_entry">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="method" transfer-ownership="none">
-            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="AssocFlags" c:type="GstAssocFlags"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="func" transfer-ownership="none">
-            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none" closure="7">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="commit"
-              c:identifier="gst_index_commit"
-              doc="Tell the index that the writer with the given id is done
-with this index and is not going to write any more entries
-to it.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_group"
-              c:identifier="gst_index_get_group"
-              doc="Get the id of the current group.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-      </method>
-      <method name="new_group"
-              c:identifier="gst_index_new_group"
-              doc="Create a new group for the given index. It will be
-set as the current group.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-      </method>
-      <method name="set_group"
-              c:identifier="gst_index_set_group"
-              doc="Set the current groupnumber to the given argument.
-did not exist.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="groupnum" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_certainty"
-              c:identifier="gst_index_set_certainty"
-              doc="Set the certainty of the given index.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="certainty" transfer-ownership="none">
-            <type name="IndexCertainty" c:type="GstIndexCertainty"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_certainty"
-              c:identifier="gst_index_get_certainty"
-              doc="Get the certainty of the given index.">
-        <return-value transfer-ownership="full">
-          <type name="IndexCertainty" c:type="GstIndexCertainty"/>
-        </return-value>
-      </method>
-      <method name="set_filter"
-              c:identifier="gst_index_set_filter"
-              doc="Lets the app register a custom filter function so that
-it can select what entries should be stored in the index.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="filter"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="IndexFilter" c:type="GstIndexFilter"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_filter_full"
-              c:identifier="gst_index_set_filter_full"
-              doc="Lets the app register a custom filter function so that
-it can select what entries should be stored in the index.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="filter"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="2"
-                     destroy="3">
-            <type name="IndexFilter" c:type="GstIndexFilter"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="user_data_destroy"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_resolver"
-              c:identifier="gst_index_set_resolver"
-              doc="Lets the app register a custom function to map index
-ids to writer descriptions.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="resolver"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="IndexResolver" c:type="GstIndexResolver"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_resolver_full"
-              c:identifier="gst_index_set_resolver_full"
-              doc="Lets the app register a custom function to map index
-ids to writer descriptions."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="resolver"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="2"
-                     destroy="3">
-            <type name="IndexResolver" c:type="GstIndexResolver"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="user_data_destroy"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_writer_id"
-              c:identifier="gst_index_get_writer_id"
-              doc="Before entries can be added to the index, a writer
-should obtain a unique id. The methods to add new entries
-to the index require this id as an argument.
-The application can implement a custom function to map the writer object
-to a string. That string will be used to register or look up an id
-in the index.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="writer" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="id" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_format"
-              c:identifier="gst_index_add_format"
-              doc="Adds a format entry into the index. This function is
-used to map dynamic GstFormat ids to their original
-format key.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_associationv"
-              c:identifier="gst_index_add_associationv"
-              doc="Associate given format/value pairs with each other.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="AssocFlags" c:type="GstAssocFlags"/>
-          </parameter>
-          <parameter name="n" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="list" transfer-ownership="none">
-            <type name="IndexAssociation" c:type="GstIndexAssociation*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_association"
-              c:identifier="gst_index_add_association"
-              doc="Associate given format/value pairs with each other.
-Be sure to pass gint64 values to this functions varargs,
-you might want to use a gint64 cast to be sure.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="AssocFlags" c:type="GstAssocFlags"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_object"
-              c:identifier="gst_index_add_object"
-              doc="Add the given object to the index with the given key.
-This function is not yet implemented.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="key" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-          <parameter name="object" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_id"
-              c:identifier="gst_index_add_id"
-              doc="Add an id entry into the index.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="description" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_assoc_entry"
-              c:identifier="gst_index_get_assoc_entry"
-              doc="Finds the given format/value in the index
-value was not found.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="method" transfer-ownership="none">
-            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="AssocFlags" c:type="GstAssocFlags"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_assoc_entry_full"
-              c:identifier="gst_index_get_assoc_entry_full"
-              doc="Finds the given format/value in the index with the given
-compare function and user_data.
-value was not found.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="method" transfer-ownership="none">
-            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="AssocFlags" c:type="GstAssocFlags"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="7">
-            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <property name="resolver" writable="1">
-        <type name="IndexResolver" c:type="GstIndexResolver"/>
-      </property>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="groups">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="curgroup">
-        <type name="IndexGroup" c:type="GstIndexGroup*"/>
-      </field>
-      <field name="maxgroup">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="method">
-        <type name="IndexResolverMethod" c:type="GstIndexResolverMethod"/>
-      </field>
-      <field name="resolver">
-        <type name="IndexResolver" c:type="GstIndexResolver"/>
-      </field>
-      <field name="resolver_user_data">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="filter">
-        <type name="IndexFilter" c:type="GstIndexFilter"/>
-      </field>
-      <field name="filter_user_data">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="filter_user_data_destroy">
-        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-      </field>
-      <field name="writers">
-        <type name="GLib.HashTable" c:type="GHashTable*"/>
-      </field>
-      <field name="last_id">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="resolver_user_data_destroy">
-        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-      <glib:signal name="entry-added">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="IndexEntry" c:type="GstIndexEntry"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="IndexAssociation"
-            c:type="GstIndexAssociation"
-            doc="An association in an entry.">
-      <field name="format" writable="1">
-        <type name="Format" c:type="GstFormat"/>
-      </field>
-      <field name="value" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-    </record>
-    <enumeration name="IndexCertainty"
-                 doc="The certainty of a group in the index."
-                 c:type="GstIndexCertainty">
-      <member name="unknown" value="0" c:identifier="GST_INDEX_UNKNOWN"/>
-      <member name="certain" value="1" c:identifier="GST_INDEX_CERTAIN"/>
-      <member name="fuzzy" value="2" c:identifier="GST_INDEX_FUZZY"/>
-    </enumeration>
-    <record name="IndexClass"
-            c:type="GstIndexClass"
-            glib:is-gtype-struct-for="Index">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="get_writer_id">
-        <callback name="get_writer_id" c:type="get_writer_id">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="index" transfer-ownership="none">
-              <type name="Index" c:type="GstIndex*"/>
-            </parameter>
-            <parameter name="writer_id"
-                       direction="out"
-                       transfer-ownership="full">
-              <type name="int" c:type="gint*"/>
-            </parameter>
-            <parameter name="writer_string" transfer-ownership="full">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="commit">
-        <callback name="commit" c:type="commit">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="index" transfer-ownership="none">
-              <type name="Index" c:type="GstIndex*"/>
-            </parameter>
-            <parameter name="id" transfer-ownership="none">
-              <type name="int" c:type="gint"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="add_entry">
-        <callback name="add_entry" c:type="add_entry">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="index" transfer-ownership="none">
-              <type name="Index" c:type="GstIndex*"/>
-            </parameter>
-            <parameter name="entry" transfer-ownership="none">
-              <type name="IndexEntry" c:type="GstIndexEntry*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_assoc_entry">
-        <callback name="get_assoc_entry" c:type="get_assoc_entry">
-          <return-value transfer-ownership="full">
-            <type name="IndexEntry" c:type="GstIndexEntry*"/>
-          </return-value>
-          <parameters>
-            <parameter name="index" transfer-ownership="none">
-              <type name="Index" c:type="GstIndex*"/>
-            </parameter>
-            <parameter name="id" transfer-ownership="none">
-              <type name="int" c:type="gint"/>
-            </parameter>
-            <parameter name="method" transfer-ownership="none">
-              <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
-            </parameter>
-            <parameter name="flags" transfer-ownership="none">
-              <type name="AssocFlags" c:type="GstAssocFlags"/>
-            </parameter>
-            <parameter name="format" transfer-ownership="none">
-              <type name="Format" c:type="GstFormat"/>
-            </parameter>
-            <parameter name="value" transfer-ownership="none">
-              <type name="int64" c:type="gint64"/>
-            </parameter>
-            <parameter name="func" transfer-ownership="none">
-              <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
-            </parameter>
-            <parameter name="user_data" transfer-ownership="none" closure="7">
-              <type name="any" c:type="gpointer"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="entry_added">
-        <callback name="entry_added" c:type="entry_added">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="index" transfer-ownership="none">
-              <type name="Index" c:type="GstIndex*"/>
-            </parameter>
-            <parameter name="entry" transfer-ownership="none">
-              <type name="IndexEntry" c:type="GstIndexEntry*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="IndexEntry"
-            c:type="GstIndexEntry"
-            doc="The basic element of an index."
-            glib:type-name="GstIndexEntry"
-            glib:get-type="gst_index_entry_get_type">
-      <field name="type" writable="1">
-        <type name="IndexEntryType" c:type="GstIndexEntryType"/>
-      </field>
-      <field name="id" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <union name="data" c:type="data">
-        <record name="id" c:type="id">
-          <field name="description" writable="1">
-            <type name="utf8" c:type="gchar*"/>
-          </field>
-        </record>
-        <record name="assoc" c:type="assoc">
-          <field name="nassocs" writable="1">
-            <type name="int" c:type="gint"/>
-          </field>
-          <field name="assocs" writable="1">
-            <type name="IndexAssociation" c:type="GstIndexAssociation*"/>
-          </field>
-          <field name="flags" writable="1">
-            <type name="AssocFlags" c:type="GstAssocFlags"/>
-          </field>
-        </record>
-        <record name="object" c:type="object">
-          <field name="key" writable="1">
-            <type name="utf8" c:type="gchar*"/>
-          </field>
-          <field name="type" writable="1">
-            <type name="GType" c:type="GType"/>
-          </field>
-          <field name="object" writable="1">
-            <type name="any" c:type="gpointer"/>
-          </field>
-        </record>
-        <record name="format" c:type="format">
-          <field name="format" writable="1">
-            <type name="Format" c:type="GstFormat"/>
-          </field>
-          <field name="key" writable="1">
-            <type name="utf8" c:type="gchar*"/>
-          </field>
-        </record>
-      </union>
-      <method name="copy"
-              c:identifier="gst_index_entry_copy"
-              doc="Copies an entry and returns the result.">
-        <return-value transfer-ownership="full">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="gst_index_entry_free"
-              doc="Free the memory used by the given entry.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="assoc_map"
-              c:identifier="gst_index_entry_assoc_map"
-              doc="Gets alternative formats associated with the indexentry.
-format.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <enumeration name="IndexEntryType"
-                 doc="The different types of entries in the index."
-                 c:type="GstIndexEntryType">
-      <member name="id" value="0" c:identifier="GST_INDEX_ENTRY_ID"/>
-      <member name="association"
-              value="1"
-              c:identifier="GST_INDEX_ENTRY_ASSOCIATION"/>
-      <member name="object" value="2" c:identifier="GST_INDEX_ENTRY_OBJECT"/>
-      <member name="format" value="3" c:identifier="GST_INDEX_ENTRY_FORMAT"/>
-    </enumeration>
-    <class name="IndexFactory"
-           c:type="GstIndexFactory"
-           doc="The GstIndexFactory object"
-           parent="PluginFeature"
-           glib:type-name="GstIndexFactory"
-           glib:get-type="gst_index_factory_get_type"
-           glib:type-struct="IndexFactoryClass">
-      <constructor name="new"
-                   c:identifier="gst_index_factory_new"
-                   doc="Create a new indexfactory with the given parameters">
-        <return-value transfer-ownership="full">
-          <type name="IndexFactory" c:type="GstIndexFactory*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="longdesc" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <function name="find"
-                c:identifier="gst_index_factory_find"
-                doc="Search for an indexfactory of the given name.">
-        <return-value transfer-ownership="full">
-          <type name="IndexFactory" c:type="GstIndexFactory*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="make"
-                c:identifier="gst_index_factory_make"
-                doc="Create a new #GstIndex instance from the
-indexfactory with the given name.">
-        <return-value transfer-ownership="full">
-          <type name="Index" c:type="GstIndex*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="destroy"
-              c:identifier="gst_index_factory_destroy"
-              doc="Removes the index from the global list.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="create"
-              c:identifier="gst_index_factory_create"
-              doc="Create a new #GstIndex instance from the
-given indexfactory.">
-        <return-value transfer-ownership="full">
-          <type name="Index" c:type="GstIndex*"/>
-        </return-value>
-      </method>
-      <field name="feature">
-        <type name="PluginFeature" c:type="GstPluginFeature"/>
-      </field>
-      <field name="longdesc">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="type">
-        <type name="GType" c:type="GType"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="IndexFactoryClass"
-            c:type="GstIndexFactoryClass"
-            glib:is-gtype-struct-for="IndexFactory">
-      <field name="parent">
-        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <callback name="IndexFilter"
-              c:type="GstIndexFilter"
-              doc="Function to filter out entries in the index.
-to the index, %FALSE otherwise.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="index" transfer-ownership="none">
-          <type name="Index" c:type="GstIndex*"/>
-        </parameter>
-        <parameter name="entry" transfer-ownership="none">
-          <type name="IndexEntry" c:type="GstIndexEntry*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <bitfield name="IndexFlags"
-              doc="Flags for this index"
-              c:type="GstIndexFlags">
-      <member name="writable" value="16" c:identifier="GST_INDEX_WRITABLE"/>
-      <member name="readable" value="32" c:identifier="GST_INDEX_READABLE"/>
-      <member name="flag_last"
-              value="4096"
-              c:identifier="GST_INDEX_FLAG_LAST"/>
-    </bitfield>
-    <record name="IndexGroup"
-            c:type="GstIndexGroup"
-            doc="A group of related entries in an index.">
-      <field name="groupnum" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="entries" writable="1">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="certainty" writable="1">
-        <type name="IndexCertainty" c:type="GstIndexCertainty"/>
-      </field>
-      <field name="peergroup" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-    </record>
-    <enumeration name="IndexLookupMethod"
-                 doc="Specify the method to find an index entry in the index."
-                 c:type="GstIndexLookupMethod">
-      <member name="exact" value="0" c:identifier="GST_INDEX_LOOKUP_EXACT"/>
-      <member name="before" value="1" c:identifier="GST_INDEX_LOOKUP_BEFORE"/>
-      <member name="after" value="2" c:identifier="GST_INDEX_LOOKUP_AFTER"/>
-    </enumeration>
-    <callback name="IndexResolver"
-              c:type="GstIndexResolver"
-              doc="Function to resolve ids to writer descriptions.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="index" transfer-ownership="none">
-          <type name="Index" c:type="GstIndex*"/>
-        </parameter>
-        <parameter name="writer" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="writer_string" transfer-ownership="none">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="3">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="IndexResolverMethod"
-                 doc="The method used to resolve index writers"
-                 c:type="GstIndexResolverMethod">
-      <member name="custom"
-              value="0"
-              c:identifier="GST_INDEX_RESOLVER_CUSTOM"/>
-      <member name="gtype" value="1" c:identifier="GST_INDEX_RESOLVER_GTYPE"/>
-      <member name="path" value="2" c:identifier="GST_INDEX_RESOLVER_PATH"/>
-    </enumeration>
-    <record name="Iterator"
-            c:type="GstIterator"
-            doc="created.
-#GstIterator base structure. The values of this structure are
-protected for subclasses, use the methods to use the #GstIterator.">
-      <field name="next" writable="1">
-        <type name="IteratorNextFunction" c:type="GstIteratorNextFunction"/>
-      </field>
-      <field name="item" writable="1">
-        <type name="IteratorItemFunction" c:type="GstIteratorItemFunction"/>
-      </field>
-      <field name="resync" writable="1">
-        <type name="IteratorResyncFunction"
-              c:type="GstIteratorResyncFunction"/>
-      </field>
-      <field name="free" writable="1">
-        <type name="IteratorFreeFunction" c:type="GstIteratorFreeFunction"/>
-      </field>
-      <field name="pushed" writable="1">
-        <type name="Iterator" c:type="GstIterator*"/>
-      </field>
-      <field name="type" writable="1">
-        <type name="GType" c:type="GType"/>
-      </field>
-      <field name="lock" writable="1">
-        <type name="GLib.Mutex" c:type="GMutex*"/>
-      </field>
-      <field name="cookie" writable="1">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="master_cookie" writable="1">
-        <type name="any" c:type="guint32*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <constructor name="new"
-                   c:identifier="gst_iterator_new"
-                   doc="iterator changed.
-Create a new iterator. This function is mainly used for objects
-implementing the next/resync/free function to iterate a data structure.
-For each item retrieved, the @item function is called with the lock
-held. The @free function is called when the iterator is freed.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-        <parameters>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-          <parameter name="lock" transfer-ownership="none">
-            <type name="GLib.Mutex" c:type="GMutex*"/>
-          </parameter>
-          <parameter name="master_cookie"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint32" c:type="guint32*"/>
-          </parameter>
-          <parameter name="next" transfer-ownership="none" scope="call">
-            <type name="IteratorNextFunction"
-                  c:type="GstIteratorNextFunction"/>
-          </parameter>
-          <parameter name="item" transfer-ownership="none" scope="call">
-            <type name="IteratorItemFunction"
-                  c:type="GstIteratorItemFunction"/>
-          </parameter>
-          <parameter name="resync" transfer-ownership="none" scope="call">
-            <type name="IteratorResyncFunction"
-                  c:type="GstIteratorResyncFunction"/>
-          </parameter>
-          <parameter name="free" transfer-ownership="none" scope="call">
-            <type name="IteratorFreeFunction"
-                  c:type="GstIteratorFreeFunction"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_list"
-                   c:identifier="gst_iterator_new_list"
-                   doc="is changed.
-Create a new iterator designed for iterating @list.
-The list you iterate is usually part of a data structure @owner and is
-protected with @lock.
-The iterator will use @lock to retrieve the next item of the list and it
-will then call the @item function before releasing @lock again.
-The @item function usualy makes sure that the item remains alive while
-responsible for freeing/unreffing the item after usage as explained in
-gst_iterator_next().
-When a concurrent update to the list is performed, usually by @owner while
-holding @lock, @master_cookie will be updated. The iterator implementation
-will notice the update of the cookie and will return %GST_ITERATOR_RESYNC to
-the user of the iterator in the next call to gst_iterator_next().
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-          <parameter name="lock" transfer-ownership="none">
-            <type name="GLib.Mutex" c:type="GMutex*"/>
-          </parameter>
-          <parameter name="master_cookie"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint32" c:type="guint32*"/>
-          </parameter>
-          <parameter name="list" transfer-ownership="none">
-            <type name="GLib.List" c:type="GList**"/>
-          </parameter>
-          <parameter name="owner" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="item" transfer-ownership="none" scope="call">
-            <type name="IteratorItemFunction"
-                  c:type="GstIteratorItemFunction"/>
-          </parameter>
-          <parameter name="free" transfer-ownership="none" scope="call">
-            <type name="IteratorDisposeFunction"
-                  c:type="GstIteratorDisposeFunction"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_single"
-                   c:identifier="gst_iterator_new_single"
-                   doc="This #GstIterator is a convenient iterator for the common
-case where a #GstIterator needs to be returned but only
-a single object has to be considered. This happens often
-for the #GstPadIterIntLinkFunction."
-                   version="0.10.25">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-          <parameter name="object" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="copy" transfer-ownership="none" scope="call">
-            <type name="CopyFunction" c:type="GstCopyFunction"/>
-          </parameter>
-          <parameter name="free" transfer-ownership="none" scope="call">
-            <type name="GLib.FreeFunc" c:type="GFreeFunc"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="next"
-              c:identifier="gst_iterator_next"
-              doc="Get the next item from the iterator in @elem.
-Only when this function returns %GST_ITERATOR_OK, @elem will contain a valid
-value. For iterators that return refcounted objects, the returned object
-will have its refcount increased and should therefore be unreffed after
-usage.
-When this function returns %GST_ITERATOR_DONE, no more elements can be
-retrieved from @it.
-A return value of %GST_ITERATOR_RESYNC indicates that the element list was
-concurrently updated. The user of @it should call gst_iterator_resync() to
-get the newly updated list.
-A return value of %GST_ITERATOR_ERROR indicates an unrecoverable fatal error.
-is a refcounted object.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="IteratorResult" c:type="GstIteratorResult"/>
-        </return-value>
-        <parameters>
-          <parameter name="elem" transfer-ownership="none">
-            <type name="any" c:type="gpointer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="resync"
-              c:identifier="gst_iterator_resync"
-              doc="Resync the iterator. this function is mostly called
-after gst_iterator_next() returned %GST_ITERATOR_RESYNC.
-When an iterator was pushed on @it, it will automatically be popped again
-with this function.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="gst_iterator_free"
-              doc="Free the iterator.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="push"
-              c:identifier="gst_iterator_push"
-              doc="Pushes @other iterator onto @it. All calls performed on @it are
-forwarded to @other. If @other returns %GST_ITERATOR_DONE, it is
-popped again and calls are handled by @it again.
-This function is mainly used by objects implementing the iterator
-next function to recurse into substructures.
-When gst_iterator_resync() is called on @it, @other will automatically be
-popped.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="other" transfer-ownership="none">
-            <type name="Iterator" c:type="GstIterator*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="filter"
-              c:identifier="gst_iterator_filter"
-              doc="Create a new iterator from an existing iterator. The new iterator
-will only return those elements that match the given compare function @func.
-in the iterator.
-When this iterator is freed, @it will also be freed.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fold"
-              c:identifier="gst_iterator_fold"
-              doc="Folds @func over the elements of @iter. That is to say, @func will be called
-as @func (object, @ret, @user_data) for each object in @it. The normal use
-of this procedure is to accumulate the results of operating on the objects in
-before @func is called, and it should be unrefed after use in @func.
-This procedure can be used (and is used internally) to implement the
-gst_iterator_foreach() and gst_iterator_find_custom() operations.
-The fold will proceed as long as @func returns TRUE. When the iterator has no
-more arguments, %GST_ITERATOR_DONE will be returned. If @func returns FALSE,
-the fold will stop, and %GST_ITERATOR_OK will be returned. Errors or resyncs
-will cause fold to return %GST_ITERATOR_ERROR or %GST_ITERATOR_RESYNC as
-appropriate.
-The iterator will not be freed.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="IteratorResult" c:type="GstIteratorResult"/>
-        </return-value>
-        <parameters>
-          <parameter name="func" transfer-ownership="none" scope="call">
-            <type name="IteratorFoldFunction"
-                  c:type="GstIteratorFoldFunction"/>
-          </parameter>
-          <parameter name="ret" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="foreach"
-              c:identifier="gst_iterator_foreach"
-              doc="Iterate over all element of @it and call the given function @func for
-each element.  As in gst_iterator_fold(), the refcount of a refcounted
-object will be increased before @func is called, and should be unrefed
-after use.
-freed.
-MT safe.">
-        <return-value transfer-ownership="full" doc="The iterator will not be">
-          <type name="IteratorResult" c:type="GstIteratorResult"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="GLib.Func" c:type="GFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="find_custom"
-              c:identifier="gst_iterator_find_custom"
-              doc="Find the first element in @it that matches the compare function @func.
-the refcount of a refcounted object will be increased before @func is
-called, and should be unrefed after use.
-The iterator will not be freed.
-This function will return NULL if an error or resync happened to
-the iterator.
-function or NULL when no element matched.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <callback name="IteratorDisposeFunction"
-              c:type="GstIteratorDisposeFunction"
-              doc="The function that will be called when a #GList iterator is freed. The
-owner of the #GList iterator can then clean up its resources.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="owner" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="IteratorFoldFunction"
-              c:type="GstIteratorFoldFunction"
-              doc="A function to be passed to gst_iterator_fold().">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="item" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="ret" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="IteratorFreeFunction"
-              c:type="GstIteratorFreeFunction"
-              doc="This function will be called when the iterator is freed.
-Implementors of a #GstIterator should implement this
-function and pass it to the constructor of the custom iterator.
-The function will be called with the iterator lock held.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="it" transfer-ownership="none">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="IteratorItem"
-                 doc="The result of a #GstIteratorItemFunction."
-                 c:type="GstIteratorItem">
-      <member name="skip" value="0" c:identifier="GST_ITERATOR_ITEM_SKIP"/>
-      <member name="pass" value="1" c:identifier="GST_ITERATOR_ITEM_PASS"/>
-      <member name="end" value="2" c:identifier="GST_ITERATOR_ITEM_END"/>
-    </enumeration>
-    <callback name="IteratorItemFunction"
-              c:type="GstIteratorItemFunction"
-              doc="The function that will be called after the next item of the iterator
-has been retrieved. This function will typically increase the refcount
-of the item or make a copy.
-Implementors of a #GstIterator should implement this
-function and pass it to the constructor of the custom iterator.
-The function will be called with the iterator lock held.">
-      <return-value transfer-ownership="full">
-        <type name="IteratorItem" c:type="GstIteratorItem"/>
-      </return-value>
-      <parameters>
-        <parameter name="it" transfer-ownership="none">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </parameter>
-        <parameter name="item" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="IteratorNextFunction"
-              c:type="GstIteratorNextFunction"
-              doc="The function that will be called when the next element of the iterator
-should be retrieved.
-Implementors of a #GstIterator should implement this
-function and pass it to the constructor of the custom iterator.
-The function will be called with the iterator lock held.">
-      <return-value transfer-ownership="full">
-        <type name="IteratorResult" c:type="GstIteratorResult"/>
-      </return-value>
-      <parameters>
-        <parameter name="it" transfer-ownership="none">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </parameter>
-        <parameter name="result" transfer-ownership="none">
-          <type name="any" c:type="gpointer*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="IteratorResult"
-                 doc="The result of gst_iterator_next()."
-                 c:type="GstIteratorResult">
-      <member name="done" value="0" c:identifier="GST_ITERATOR_DONE"/>
-      <member name="ok" value="1" c:identifier="GST_ITERATOR_OK"/>
-      <member name="resync" value="2" c:identifier="GST_ITERATOR_RESYNC"/>
-      <member name="error" value="3" c:identifier="GST_ITERATOR_ERROR"/>
-    </enumeration>
-    <callback name="IteratorResyncFunction"
-              c:type="GstIteratorResyncFunction"
-              doc="This function will be called whenever a concurrent update happened
-to the iterated datastructure. The implementor of the iterator should
-restart the iterator from the beginning and clean up any state it might
-have.
-Implementors of a #GstIterator should implement this
-function and pass it to the constructor of the custom iterator.
-The function will be called with the iterator lock held.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="it" transfer-ownership="none">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <constant name="LICENSE_UNKNOWN" value="unknown">
-      <type name="utf8"/>
-    </constant>
-    <enumeration name="LibraryError"
-                 doc="category.  Make sure you add a custom message to the error call.
-deciding where to go while developing code.
-Library errors are for errors from the library being used by elements
-(initializing, finalizing, settings, ...)"
-                 c:type="GstLibraryError"
-                 glib:error-quark="gst_library_error_quark">
-      <member name="failed" value="1" c:identifier="GST_LIBRARY_ERROR_FAILED"/>
-      <member name="too_lazy"
-              value="2"
-              c:identifier="GST_LIBRARY_ERROR_TOO_LAZY"/>
-      <member name="init" value="3" c:identifier="GST_LIBRARY_ERROR_INIT"/>
-      <member name="shutdown"
-              value="4"
-              c:identifier="GST_LIBRARY_ERROR_SHUTDOWN"/>
-      <member name="settings"
-              value="5"
-              c:identifier="GST_LIBRARY_ERROR_SETTINGS"/>
-      <member name="encode" value="6" c:identifier="GST_LIBRARY_ERROR_ENCODE"/>
-      <member name="num_errors"
-              value="7"
-              c:identifier="GST_LIBRARY_ERROR_NUM_ERRORS"/>
-    </enumeration>
-    <callback name="LogFunction"
-              c:type="GstLogFunction"
-              doc="Function prototype for a logging function that can be registered with
-gst_debug_add_log_function().
-Use G_GNUC_NO_INSTRUMENT on that function.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="category" transfer-ownership="none">
-          <type name="DebugCategory" c:type="GstDebugCategory*"/>
-        </parameter>
-        <parameter name="level" transfer-ownership="none">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </parameter>
-        <parameter name="file" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="function" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="line" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="object" transfer-ownership="none">
-          <type name="GObject.Object" c:type="GObject*"/>
-        </parameter>
-        <parameter name="message" transfer-ownership="none">
-          <type name="DebugMessage" c:type="GstDebugMessage*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <constant name="MESSAGE_TRACE_NAME" value="GstMessage">
-      <type name="utf8"/>
-    </constant>
-    <constant name="MSECOND" value="0">
-      <type name="int"/>
-    </constant>
-    <constant name="M_PI" value="3.14159265359">
-      <type name="double"/>
-    </constant>
-    <record name="Message" c:type="GstMessage" doc="A #GstMessage.">
-      <field name="mini_object" writable="1">
-        <type name="MiniObject" c:type="GstMiniObject"/>
-      </field>
-      <field name="lock" writable="1">
-        <type name="GLib.Mutex" c:type="GMutex*"/>
-      </field>
-      <field name="cond" writable="1">
-        <type name="GLib.Cond" c:type="GCond*"/>
-      </field>
-      <field name="type" writable="1">
-        <type name="MessageType" c:type="GstMessageType"/>
-      </field>
-      <field name="timestamp" writable="1">
-        <type name="uint64" c:type="guint64"/>
-      </field>
-      <field name="src" writable="1">
-        <type name="Object" c:type="GstObject*"/>
-      </field>
-      <field name="structure" writable="1">
-        <type name="Structure" c:type="GstStructure*"/>
-      </field>
-      <union name="abidata" c:type="abidata">
-        <record name="ABI" c:type="ABI">
-          <field name="seqnum" writable="1">
-            <type name="uint32" c:type="guint32"/>
-          </field>
-        </record>
-        <field name="_gst_reserved" writable="1">
-          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-            <type name="any"/>
-          </array>
-        </field>
-      </union>
-      <constructor name="new_eos"
-                   c:identifier="gst_message_new_eos"
-                   doc="Create a new eos message. This message is generated and posted in
-the sink elements of a GstBin. The bin will only forward the EOS
-message to the application if all sinks have posted an EOS message.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_error"
-                   c:identifier="gst_message_new_error"
-                   doc="Create a new error message. The message will copy @error and
-occured. The pipeline will probably (partially) stop. The application
-receiving this message should stop the pipeline.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="error" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError*"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_warning"
-                   c:identifier="gst_message_new_warning"
-                   doc="Create a new warning message. The message will make copies of @error and
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="error" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError*"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_info"
-                   c:identifier="gst_message_new_info"
-                   doc="Create a new info message. The message will make copies of @error and
-MT safe."
-                   version="0.10.12">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="error" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError*"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_tag"
-                   c:identifier="gst_message_new_tag"
-                   doc="Create a new tag message. The message will take ownership of the tag list.
-The message is posted by elements that discovered a new taglist.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="tag_list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_tag_full"
-                   c:identifier="gst_message_new_tag_full"
-                   doc="Create a new tag message. The message will take ownership of the tag list.
-The message is posted by elements that discovered a new taglist.
-MT safe."
-                   version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-          <parameter name="tag_list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_buffering"
-                   c:identifier="gst_message_new_buffering"
-                   doc="Create a new buffering message. This message can be posted by an element that
-needs to buffer data before it can continue processing. @percent should be a
-value between 0 and 100. A value of 100 means that the buffering completed.
-When @percent is &lt; 100 the application should PAUSE a PLAYING pipeline. When
-The application must be prepared to receive BUFFERING messages in the
-PREROLLING state and may only set the pipeline to PLAYING after receiving a
-message with @percent set to 100, which can happen after the pipeline
-completed prerolling.
-MT safe."
-                   version="0.10.11">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="percent" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_state_changed"
-                   c:identifier="gst_message_new_state_changed"
-                   doc="Create a state change message. This message is posted whenever an element
-changed its state.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="oldstate" transfer-ownership="none">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-          <parameter name="newstate" transfer-ownership="none" doc="state">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-          <parameter name="pending" transfer-ownership="none" doc="state">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_state_dirty"
-                   c:identifier="gst_message_new_state_dirty"
-                   doc="Create a state dirty message. This message is posted whenever an element
-changed its state asynchronously and is used internally to update the
-states of container objects.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_step_done"
-                   c:identifier="gst_message_new_step_done"
-                   doc="This message is posted by elements when they complete a part, when @intermediate set
-to TRUE, or a complete step operation.
-MT safe."
-                   version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="amount" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="flush" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="intermediate" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="duration" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="eos" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_clock_provide"
-                   c:identifier="gst_message_new_clock_provide"
-                   doc="Create a clock provide message. This message is posted whenever an
-element is ready to provide a clock or lost its ability to provide
-a clock (maybe because it paused or became EOS).
-This message is mainly used internally to manage the clock
-selection.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-          <parameter name="ready" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_clock_lost"
-                   c:identifier="gst_message_new_clock_lost"
-                   doc="Create a clock lost message. This message is posted whenever the
-clock is not valid anymore.
-If this message is posted by the pipeline, the pipeline will
-select a new clock again when it goes to PLAYING. It might therefore
-be needed to set the pipeline to PAUSED and PLAYING again.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_new_clock"
-                   c:identifier="gst_message_new_new_clock"
-                   doc="Create a new clock message. This message is posted whenever the
-pipeline selectes a new clock for the pipeline.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_application"
-                   c:identifier="gst_message_new_application"
-                   doc="the structure.
-Create a new application-typed message. GStreamer will never create these
-messages; they are a gift from us to you. Enjoy.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_element"
-                   c:identifier="gst_message_new_element"
-                   doc="the structure.
-Create a new element-specific message. This is meant as a generic way of
-allowing one-way communication from an element to an application, for example
-&quot;the firewire cable was unplugged&quot;. The format of the message should be
-documented in the element&apos;s documentation. The structure field can be NULL.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_segment_start"
-                   c:identifier="gst_message_new_segment_start"
-                   doc="Create a new segment message. This message is posted by elements that
-start playback of a segment as a result of a segment seek. This message
-is not received by the application but is used for maintenance reasons in
-container elements.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_segment_done"
-                   c:identifier="gst_message_new_segment_done"
-                   doc="Create a new segment done message. This message is posted by elements that
-finish playback of a segment as a result of a segment seek. This message
-is received by the application after all elements that posted a segment_start
-have posted the segment_done.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_duration"
-                   c:identifier="gst_message_new_duration"
-                   doc="Create a new duration message. This message is posted by elements that
-know the duration of a stream in a specific format. This message
-is received by bins and is used to calculate the total duration of a
-pipeline. Elements may post a duration message with a duration of
-GST_CLOCK_TIME_NONE to indicate that the duration has changed and the
-cached duration should be discarded. The new duration can then be
-retrieved via a query.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="duration" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_latency"
-                   c:identifier="gst_message_new_latency"
-                   doc="This message can be posted by elements when their latency requirements have
-changed.
-MT safe."
-                   version="0.10.12">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_async_start"
-                   c:identifier="gst_message_new_async_start"
-                   doc="This message is posted by elements when they start an ASYNC state change.
-PLAYING.
-MT safe."
-                   version="0.10.13">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="new_base_time" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_async_done"
-                   c:identifier="gst_message_new_async_done"
-                   doc="The message is posted when elements completed an ASYNC state change.
-MT safe."
-                   version="0.10.13">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_structure_change"
-                   c:identifier="gst_message_new_structure_change"
-                   doc="Create a new structure change message. This message is posted when the
-structure of a pipeline is in the process of being changed, for example
-when pads are linked or unlinked.
-MT safe."
-                   version="0.10.22.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="StructureChangeType" c:type="GstStructureChangeType"/>
-          </parameter>
-          <parameter name="owner" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-          <parameter name="busy" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_stream_status"
-                   c:identifier="gst_message_new_stream_status"
-                   doc="Create a new stream status message. This message is posted when a streaming
-thread is created/destroyed or when the state changed.
-MT safe."
-                   version="0.10.24.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="StreamStatusType" c:type="GstStreamStatusType"/>
-          </parameter>
-          <parameter name="owner" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_request_state"
-                   c:identifier="gst_message_new_request_state"
-                   doc="This message can be posted by elements when they want to have their state
-changed. A typical use case would be an audio server that wants to pause the
-pipeline because a higher priority stream is being played.
-MT safe."
-                   version="0.10.23">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="state" transfer-ownership="none">
-            <type name="State" c:type="GstState"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_step_start"
-                   c:identifier="gst_message_new_step_start"
-                   doc="This message is posted by elements when they accept or activate a new step
-event for @amount in @format.
-queued it for execution in the streaming threads.
-is now ready to start executing the step in the streaming thread. After this
-message is emited, the application can queue a new step operation in the
-element.
-MT safe."
-                   version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="active" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="amount" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="flush" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="intermediate" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_qos"
-                   c:identifier="gst_message_new_qos"
-                   doc="A QOS message is posted on the bus whenever an element decides to drop a
-buffer because of QoS reasons or whenever it changes its processing strategy
-because of QoS reasons (quality adjustments such as processing at lower
-accuracy).
-This message can be posted by an element that performs synchronisation against the
-clock (live) or it could be dropped by an element that performs QoS because of QOS
-events received from a downstream element (!live).
-respective running-time, stream-time, timestamp and duration of the (dropped)
-buffer that generated the QoS event. Values can be left to
-GST_CLOCK_TIME_NONE when unknown.
-MT safe."
-                   version="0.10.29">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="live" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="running_time" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="stream_time" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="timestamp" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="duration" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_custom"
-                   c:identifier="gst_message_new_custom"
-                   doc="the structure.
-Create a new custom-typed message. This can be used for anything not
-handled by other message-specific functions to pass a message to the
-app. The structure field can be NULL.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Message" c:type="GstMessage*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="MessageType" c:type="GstMessageType"/>
-          </parameter>
-          <parameter name="src" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="get_seqnum"
-              c:identifier="gst_message_get_seqnum"
-              doc="Retrieve the sequence number of a message.
-Messages have ever-incrementing sequence numbers, which may also be set
-explicitly via gst_message_set_seqnum(). Sequence numbers are typically used
-to indicate that a message corresponds to some other set of messages or
-events, for example a SEGMENT_DONE message corresponding to a SEEK event. It
-is considered good practice to make this correspondence when possible, though
-it is not required.
-Note that events and messages share the same sequence number incrementor;
-two events or messages will never not have the same sequence number unless
-that correspondence was made explicitly.
-MT safe."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="uint32" c:type="guint32"/>
-        </return-value>
-      </method>
-      <method name="set_seqnum"
-              c:identifier="gst_message_set_seqnum"
-              doc="Set the sequence number of a message.
-This function might be called by the creator of a message to indicate that
-the message relates to other messages or events. See gst_message_get_seqnum()
-for more information.
-MT safe."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="seqnum" transfer-ownership="none">
-            <type name="uint32" c:type="guint32"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_error"
-              c:identifier="gst_message_parse_error"
-              doc="Extracts the GError and debug string from the GstMessage. The values returned
-in the output arguments are copies; the caller must free them when done.
-Typical usage of this function might be:
-|[
-...
-switch (GST_MESSAGE_TYPE (msg)) {
-GError *err = NULL;
-gchar *dbg_info = NULL;
-gst_message_parse_error (msg, &amp;amp;err, &amp;amp;dbg_info);
-GST_OBJECT_NAME (msg-&gt;src), err-&gt;message);
-g_error_free (err);
-g_free (dbg_info);
-break;
-}
-...
-}
-...
-]|
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="gerror" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError**"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_warning"
-              c:identifier="gst_message_parse_warning"
-              doc="Extracts the GError and debug string from the GstMessage. The values returned
-in the output arguments are copies; the caller must free them when done.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="gerror" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError**"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_info"
-              c:identifier="gst_message_parse_info"
-              doc="Extracts the GError and debug string from the GstMessage. The values returned
-in the output arguments are copies; the caller must free them when done.
-MT safe."
-              version="0.10.12">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="gerror" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError**"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_tag"
-              c:identifier="gst_message_parse_tag"
-              doc="Extracts the tag list from the GstMessage. The tag list returned in the
-output argument is a copy; the caller must free it when done.
-Typical usage of this function might be:
-|[
-...
-switch (GST_MESSAGE_TYPE (msg)) {
-GstTagList *tags = NULL;
-gst_message_parse_tag (msg, &amp;amp;tags);
-g_print (&quot;Got tags from element %s\n&quot;, GST_OBJECT_NAME (msg-&gt;src));
-handle_tags (tags);
-gst_tag_list_free (tags);
-break;
-}
-...
-}
-...
-]|
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag_list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_tag_full"
-              c:identifier="gst_message_parse_tag_full"
-              doc="Extracts the tag list from the GstMessage. The tag list returned in the
-output argument is a copy; the caller must free it when done.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad**"/>
-          </parameter>
-          <parameter name="tag_list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_buffering"
-              c:identifier="gst_message_parse_buffering"
-              doc="Extracts the buffering percent from the GstMessage. see also
-gst_message_new_buffering().
-MT safe."
-              version="0.10.11">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="percent" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_buffering_stats"
-              c:identifier="gst_message_set_buffering_stats"
-              doc="Configures the buffering stats values in @message."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="BufferingMode" c:type="GstBufferingMode"/>
-          </parameter>
-          <parameter name="avg_in" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="avg_out" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="buffering_left" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_buffering_stats"
-              c:identifier="gst_message_parse_buffering_stats"
-              doc="Extracts the buffering stats values from @message."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="BufferingMode" c:type="GstBufferingMode*"/>
-          </parameter>
-          <parameter name="avg_in" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="avg_out" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="buffering_left"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_state_changed"
-              c:identifier="gst_message_parse_state_changed"
-              doc="Extracts the old and new states from the GstMessage.
-Typical usage of this function might be:
-|[
-...
-switch (GST_MESSAGE_TYPE (msg)) {
-GstState old_state, new_state;
-gst_message_parse_state_changed (msg, &amp;amp;old_state, &amp;amp;new_state, NULL);
-g_print (&quot;Element %s changed state from %s to %s.\n&quot;,
-GST_OBJECT_NAME (msg-&gt;src),
-gst_element_state_get_name (old_state),
-gst_element_state_get_name (new_state));
-break;
-}
-...
-}
-...
-]|
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="oldstate" transfer-ownership="none">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-          <parameter name="newstate"
-                     transfer-ownership="none"
-                     doc="state, or NULL">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-          <parameter name="pending"
-                     transfer-ownership="none"
-                     doc="state, or NULL">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_step_done"
-              c:identifier="gst_message_parse_step_done"
-              doc="Extract the values the step_done message.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="amount" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="flush" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="intermediate"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="duration" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="eos" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_clock_provide"
-              c:identifier="gst_message_parse_clock_provide"
-              doc="Extracts the clock and ready flag from the GstMessage.
-The clock object returned remains valid until the message is freed.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock**"/>
-          </parameter>
-          <parameter name="ready" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_clock_lost"
-              c:identifier="gst_message_parse_clock_lost"
-              doc="Extracts the lost clock from the GstMessage.
-The clock object returned remains valid until the message is freed.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_new_clock"
-              c:identifier="gst_message_parse_new_clock"
-              doc="Extracts the new clock from the GstMessage.
-The clock object returned remains valid until the message is freed.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_segment_start"
-              c:identifier="gst_message_parse_segment_start"
-              doc="Extracts the position and format from the segment start message.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="position" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_segment_done"
-              c:identifier="gst_message_parse_segment_done"
-              doc="Extracts the position and format from the segment start message.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="position" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_duration"
-              c:identifier="gst_message_parse_duration"
-              doc="Extracts the duration and format from the duration message. The duration
-might be GST_CLOCK_TIME_NONE, which indicates that the duration has
-changed. Applications should always use a query to retrieve the duration
-of a pipeline.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="duration" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_async_start"
-              c:identifier="gst_message_parse_async_start"
-              doc="Extract the new_base_time from the async_start message.
-MT safe."
-              version="0.10.13">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="new_base_time"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_structure_change"
-              c:identifier="gst_message_parse_structure_change"
-              doc="completed
-Extracts the change type and completion status from the GstMessage.
-MT safe."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="StructureChangeType" c:type="GstStructureChangeType*"/>
-          </parameter>
-          <parameter name="owner" transfer-ownership="none">
-            <type name="Element" c:type="GstElement**"/>
-          </parameter>
-          <parameter name="busy" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_stream_status"
-              c:identifier="gst_message_parse_stream_status"
-              doc="Extracts the stream status type and owner the GstMessage. The returned
-owner remains valid for as long as the reference to @message is valid and
-should thus not be unreffed.
-MT safe."
-              version="0.10.24.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="StreamStatusType" c:type="GstStreamStatusType*"/>
-          </parameter>
-          <parameter name="owner" transfer-ownership="none">
-            <type name="Element" c:type="GstElement**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_stream_status_object"
-              c:identifier="gst_message_set_stream_status_object"
-              doc="Configures the object handling the streaming thread. This is usually a
-GstTask object but other objects might be added in the future."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_stream_status_object"
-              c:identifier="gst_message_get_stream_status_object"
-              doc="Extracts the object managing the streaming thread from @message.
-This object is usually of type GstTask but other types can be added in the
-future. The object remains valid as long as @message is valid."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </return-value>
-      </method>
-      <method name="parse_request_state"
-              c:identifier="gst_message_parse_request_state"
-              doc="Extract the requested state from the request_state message.
-MT safe."
-              version="0.10.23">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="state" transfer-ownership="none">
-            <type name="State" c:type="GstState*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_step_start"
-              c:identifier="gst_message_parse_step_start"
-              doc="Extract the values from step_start message.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="active" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="amount" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="flush" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="intermediate"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_qos_values"
-              c:identifier="gst_message_set_qos_values"
-              doc="to get optimal quality.
-quality level of the element. The default maximum quality is 1000000.
-Set the QoS values that have been calculated/analysed from the QoS data
-MT safe."
-              version="0.10.29">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="jitter" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="proportion" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="quality" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_qos_stats"
-              c:identifier="gst_message_set_qos_stats"
-              doc="filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters
-will likely use GST_FORMAT_DEFAULT (samples).
-change to READY or a flushing operation.
-or a flushing operation.
-Set the QoS stats representing the history of the current continuous pipeline
-playback period.
-When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are
-invalid. Values of -1 for either @processed or @dropped mean unknown values.
-MT safe."
-              version="0.10.29">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="processed" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="dropped" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_qos"
-              c:identifier="gst_message_parse_qos"
-              doc="Extract the timestamps and live status from the QoS message.
-The returned values give the running_time, stream_time, timestamp and
-duration of the dropped buffer. Values of GST_CLOCK_TIME_NONE mean unknown
-values.
-MT safe."
-              version="0.10.29">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="live" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="running_time"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="stream_time"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="timestamp"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="duration" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_qos_values"
-              c:identifier="gst_message_parse_qos_values"
-              doc="to get optimal quality.
-quality level of the element. The default maximum quality is 1000000.
-Extract the QoS values that have been calculated/analysed from the QoS data
-MT safe."
-              version="0.10.29">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="jitter" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="proportion"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="quality" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_qos_stats"
-              c:identifier="gst_message_parse_qos_stats"
-              doc="filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters
-will likely use GST_FORMAT_DEFAULT (samples).
-change to READY or a flushing operation.
-or a flushing operation.
-Extract the QoS stats representing the history of the current continuous
-pipeline playback period.
-When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are
-invalid. Values of -1 for either @processed or @dropped mean unknown values.
-MT safe."
-              version="0.10.29">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="processed"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-          <parameter name="dropped" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_structure"
-              c:identifier="gst_message_get_structure"
-              doc="Access the structure of the message.
-owned by the message, which means that you should not free it and
-that the pointer becomes invalid when you free the message.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="MessageClass" c:type="GstMessageClass">
-      <field name="mini_object_class" writable="1">
-        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="MessageType"
-              doc="only receive this message in the PLAYING state and every time it sets a
-pipeline to PLAYING that is in the EOS state. The application can perform a
-flushing seek in the pipeline, which will undo the EOS state again.
-message it should stop playback of the pipeline and not assume that more
-data will be played.
-receives a buffering message in the PLAYING state for a non-live pipeline it
-must PAUSE the pipeline until the buffering completes, when the percentage
-field in the message is 100%. For live pipelines, no action must be
-performed and the buffering percentage can be used to inform the user about
-the progress.
-This message is deprecated.
-a clock. This message is used internally and
-never forwarded to the application.
-unusable. The pipeline will select a new clock on
-the next PLAYING state change. The application
-should set the pipeline to PAUSED and back to
-PLAYING when this message is received.
-message is used internally and never forwarded to the application.
-stops, errors, etc..
-via an application-specific element.
-documentation
-message is used internally and never forwarded to the application.
-message is forwarded to the application after all elements that posted
-can get the new duration with a duration query.
-change. This message is not forwarded to the application but is used
-change. The application will only receive this message from the toplevel
-change state. This message is a suggestion to the application which can
-The different message types that are available."
-              c:type="GstMessageType">
-      <member name="unknown" value="0" c:identifier="GST_MESSAGE_UNKNOWN"/>
-      <member name="eos" value="1" c:identifier="GST_MESSAGE_EOS"/>
-      <member name="error" value="2" c:identifier="GST_MESSAGE_ERROR"/>
-      <member name="warning" value="4" c:identifier="GST_MESSAGE_WARNING"/>
-      <member name="info" value="8" c:identifier="GST_MESSAGE_INFO"/>
-      <member name="tag" value="16" c:identifier="GST_MESSAGE_TAG"/>
-      <member name="buffering"
-              value="32"
-              c:identifier="GST_MESSAGE_BUFFERING"/>
-      <member name="state_changed"
-              value="64"
-              c:identifier="GST_MESSAGE_STATE_CHANGED"/>
-      <member name="state_dirty"
-              value="128"
-              c:identifier="GST_MESSAGE_STATE_DIRTY"/>
-      <member name="step_done"
-              value="256"
-              c:identifier="GST_MESSAGE_STEP_DONE"/>
-      <member name="clock_provide"
-              value="512"
-              c:identifier="GST_MESSAGE_CLOCK_PROVIDE"/>
-      <member name="clock_lost"
-              value="1024"
-              c:identifier="GST_MESSAGE_CLOCK_LOST"/>
-      <member name="new_clock"
-              value="2048"
-              c:identifier="GST_MESSAGE_NEW_CLOCK"/>
-      <member name="structure_change"
-              value="4096"
-              c:identifier="GST_MESSAGE_STRUCTURE_CHANGE"/>
-      <member name="stream_status"
-              value="8192"
-              c:identifier="GST_MESSAGE_STREAM_STATUS"/>
-      <member name="application"
-              value="16384"
-              c:identifier="GST_MESSAGE_APPLICATION"/>
-      <member name="element" value="32768" c:identifier="GST_MESSAGE_ELEMENT"/>
-      <member name="segment_start"
-              value="65536"
-              c:identifier="GST_MESSAGE_SEGMENT_START"/>
-      <member name="segment_done"
-              value="131072"
-              c:identifier="GST_MESSAGE_SEGMENT_DONE"/>
-      <member name="duration"
-              value="262144"
-              c:identifier="GST_MESSAGE_DURATION"/>
-      <member name="latency"
-              value="524288"
-              c:identifier="GST_MESSAGE_LATENCY"/>
-      <member name="async_start"
-              value="1048576"
-              c:identifier="GST_MESSAGE_ASYNC_START"/>
-      <member name="async_done"
-              value="2097152"
-              c:identifier="GST_MESSAGE_ASYNC_DONE"/>
-      <member name="request_state"
-              value="4194304"
-              c:identifier="GST_MESSAGE_REQUEST_STATE"/>
-      <member name="step_start"
-              value="8388608"
-              c:identifier="GST_MESSAGE_STEP_START"/>
-      <member name="qos" value="16777216" c:identifier="GST_MESSAGE_QOS"/>
-      <member name="any" value="-1" c:identifier="GST_MESSAGE_ANY"/>
-    </bitfield>
-    <record name="MiniObject"
-            c:type="GstMiniObject"
-            doc="Base class for refcounted lightweight objects.">
-      <field name="instance" writable="1">
-        <type name="GObject.TypeInstance" c:type="GTypeInstance"/>
-      </field>
-      <field name="refcount" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="flags" writable="1">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="gst_mini_object_new"
-                   doc="Creates a new mini-object of the desired type.
-MT safe">
-        <return-value transfer-ownership="full">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="copy"
-              c:identifier="gst_mini_object_copy"
-              doc="Creates a copy of the mini-object.
-MT safe">
-        <return-value transfer-ownership="full">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </return-value>
-      </method>
-      <method name="is_writable"
-              c:identifier="gst_mini_object_is_writable"
-              doc="Checks if a mini-object is writable.  A mini-object is writable
-if the reference count is one and the #GST_MINI_OBJECT_FLAG_READONLY
-flag is not set.  Modification of a mini-object should only be
-done after verifying that it is writable.
-MT safe">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="make_writable"
-              c:identifier="gst_mini_object_make_writable"
-              doc="Checks if a mini-object is writable.  If not, a writable copy is made and
-returned.  This gives away the reference to the original mini object,
-and returns a reference to the new object.
-MT safe">
-        <return-value transfer-ownership="full" doc="that is writable.">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </return-value>
-      </method>
-      <method name="ref"
-              c:identifier="gst_mini_object_ref"
-              doc="Increase the reference count of the mini-object.
-Note that the refcount affects the writeability
-of @mini-object, see gst_mini_object_is_writable(). It is
-important to note that keeping additional references to
-GstMiniObject instances can potentially increase the number
-of memcpy operations in a pipeline, especially if the miniobject
-is a #GstBuffer.">
-        <return-value transfer-ownership="full">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </return-value>
-      </method>
-      <method name="unref"
-              c:identifier="gst_mini_object_unref"
-              doc="Decreases the reference count of the mini-object, possibly freeing
-the mini-object.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="replace"
-              c:identifier="gst_mini_object_replace"
-              doc="Modifies a pointer to point to a new mini-object.  The modification
-is done atomically, and the reference counts are updated correctly.
-Either @newdata and the value pointed to by @olddata may be NULL.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="newdata" transfer-ownership="none">
-            <type name="MiniObject" c:type="GstMiniObject*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="MiniObjectClass" c:type="GstMiniObjectClass">
-      <field name="type_class" writable="1">
-        <type name="GObject.TypeClass" c:type="GTypeClass"/>
-      </field>
-      <field name="copy" writable="1">
-        <type name="MiniObjectCopyFunction"
-              c:type="GstMiniObjectCopyFunction"/>
-      </field>
-      <field name="finalize" writable="1">
-        <type name="MiniObjectFinalizeFunction"
-              c:type="GstMiniObjectFinalizeFunction"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-    </record>
-    <callback name="MiniObjectCopyFunction"
-              c:type="GstMiniObjectCopyFunction"
-              doc="Virtual function prototype for methods to create copies of instances.">
-      <return-value transfer-ownership="full">
-        <type name="MiniObject" c:type="GstMiniObject*"/>
-      </return-value>
-      <parameters>
-        <parameter name="obj" transfer-ownership="none">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="MiniObjectFinalizeFunction"
-              c:type="GstMiniObjectFinalizeFunction"
-              doc="Virtual function prototype for methods to free ressources used by
-mini-objects. Subclasses of the mini object are allowed to revive the
-passed object by doing a gst_mini_object_ref(). If the object is not
-revived after the finalize function, the memory associated with the
-object is freed.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="obj" transfer-ownership="none">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <bitfield name="MiniObjectFlags"
-              doc="Flags for the padtemplate"
-              c:type="GstMiniObjectFlags">
-      <member name="readonly"
-              value="1"
-              c:identifier="GST_MINI_OBJECT_FLAG_READONLY"/>
-      <member name="last" value="16" c:identifier="GST_MINI_OBJECT_FLAG_LAST"/>
-    </bitfield>
-    <constant name="NSECOND" value="0">
-      <type name="int"/>
-    </constant>
-    <class name="Object"
-           c:type="GstObject"
-           doc="GStreamer base object class."
-           parent="GObject.Object"
-           abstract="1"
-           glib:type-name="GstObject"
-           glib:get-type="gst_object_get_type"
-           glib:type-struct="ObjectClass">
-      <function name="default_deep_notify"
-                c:identifier="gst_object_default_deep_notify"
-                doc="NULL to show all changes.
-A default deep_notify signal callback for an object. The user data
-should contain a pointer to an array of strings that should be excluded
-from the notify. The default handler will print the new value of the property
-using g_print.
-MT safe. This function grabs and releases @object&apos;s LOCK for getting its
-path string.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="GObject.Object" c:type="GObject*"/>
-          </parameter>
-          <parameter name="orig" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="pspec" transfer-ownership="none">
-            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
-          </parameter>
-          <parameter name="excluded_props" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="ref"
-                c:identifier="gst_object_ref"
-                doc="Increments the reference count on @object. This function
-does not take the lock on @object because it relies on
-atomic refcounting.
-This object returns the input parameter to ease writing
-constructs like :
-result = gst_object_ref (object-&gt;parent);">
-        <return-value transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="unref"
-                c:identifier="gst_object_unref"
-                doc="Decrements the reference count on @object.  If reference count hits
-zero, destroy @object. This function does not take the lock
-on @object as it relies on atomic refcounting.
-The unref method should never be called with the LOCK held since
-this might deadlock the dispose function.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="ref_sink"
-                c:identifier="gst_object_ref_sink"
-                doc="Increase the reference count of @object, and possibly remove the floating
-reference, if @object has a floating reference.
-In other words, if the object is floating, then this call &quot;assumes ownership&quot;
-of the floating reference, converting it to a normal reference by clearing
-the floating flag while leaving the reference count unchanged. If the object
-is not floating, then this call adds a new normal reference increasing the
-reference count by one.
-MT safe. This function grabs and releases @object lock."
-                version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="sink"
-                c:identifier="gst_object_sink"
-                doc="If @object was floating, the #GST_OBJECT_FLOATING flag is removed
-and @object is unreffed. When @object was not floating,
-this function does nothing.
-Any newly created object has a refcount of 1 and is floating.
-This function should be used when creating a new object to
-symbolically &apos;take ownership&apos; of @object. This done by first doing a
-gst_object_ref() to keep a reference to @object and then gst_object_sink()
-to remove and unref any floating references to @object.
-Use gst_object_set_parent() to have this done for you.
-MT safe. This function grabs and releases @object lock.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="check_uniqueness"
-                c:identifier="gst_object_check_uniqueness"
-                doc="Checks to see if there is any object named @name in @list. This function
-does not do any locking of any kind. You might want to protect the
-provided list with the lock of the owner of the list. This function
-will lock each #GstObject in the list to compare the name, so be
-carefull when passing a list with a locked object.
-FALSE if it does.
-MT safe. Grabs and releases the LOCK of each object in the list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="GLib.List" c:type="GList*"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <virtual-method name="save_thyself" invoker="save_thyself">
-        <return-value transfer-ownership="full">
-          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-        </return-value>
-        <parameters>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="restore_thyself" invoker="restore_thyself">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="self" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="set_name"
-              c:identifier="gst_object_set_name"
-              doc="Sets the name of @object, or gives @object a guaranteed unique
-name (if @name is NULL).
-This function makes a copy of the provided name, so the caller
-retains ownership of the name it sent.
-a parent cannot be renamed, this function returns FALSE in those
-cases.
-MT safe.  This function grabs and releases @object&apos;s LOCK.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_name"
-              c:identifier="gst_object_get_name"
-              doc="Returns a copy of the name of @object.
-Caller should g_free() the return value after usage.
-For a nameless object, this returns NULL, which you can safely g_free()
-as well.
-MT safe. This function grabs and releases @object&apos;s LOCK.">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="set_name_prefix"
-              c:identifier="gst_object_set_name_prefix"
-              doc="Sets the name prefix of @object to @name_prefix.
-This function makes a copy of the provided name prefix, so the caller
-retains ownership of the name prefix it sent.
-MT safe.  This function grabs and releases @object&apos;s LOCK.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="name_prefix" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_name_prefix"
-              c:identifier="gst_object_get_name_prefix"
-              doc="Returns a copy of the name prefix of @object.
-Caller should g_free() the return value after usage.
-For a prefixless object, this returns NULL, which you can safely g_free()
-as well.
-MT safe. This function grabs and releases @object&apos;s LOCK.">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="set_parent"
-              c:identifier="gst_object_set_parent"
-              doc="Sets the parent of @object to @parent. The object&apos;s reference count will
-be incremented, and any floating reference will be removed (see gst_object_sink()).
-This function causes the parent-set signal to be emitted when the parent
-was successfully set.
-already had a parent or @object and @parent are the same.
-MT safe. Grabs and releases @object&apos;s LOCK.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_parent"
-              c:identifier="gst_object_get_parent"
-              doc="Returns the parent of @object. This function increases the refcount
-of the parent object so you should gst_object_unref() it after usage.
-parent. unref after usage.
-MT safe. Grabs and releases @object&apos;s LOCK.">
-        <return-value transfer-ownership="full">
-          <type name="Object" c:type="GstObject*"/>
-        </return-value>
-      </method>
-      <method name="unparent"
-              c:identifier="gst_object_unparent"
-              doc="Clear the parent of @object, removing the associated reference.
-This function decreases the refcount of @object.
-MT safe. Grabs and releases @object&apos;s lock.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="has_ancestor"
-              c:identifier="gst_object_has_ancestor"
-              doc="Check if @object has an ancestor @ancestor somewhere up in
-the hierarchy.
-MT safe. Grabs and releases @object&apos;s locks.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="ancestor" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="replace"
-              c:identifier="gst_object_replace"
-              doc="Unrefs the #GstObject pointed to by @oldobj, refs @newobj and
-puts @newobj in *@oldobj. Be carefull when calling this
-function, it does not take any locks. You might want to lock
-the object owning @oldobj pointer before calling this
-function.
-Make sure not to LOCK @oldobj because it might be unreffed
-which could cause a deadlock when it is disposed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="newobj" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_path_string"
-              c:identifier="gst_object_get_path_string"
-              doc="Generates a string describing the path of @object in
-the object hierarchy. Only useful (or used) for debugging.
-g_free() the string after usage.
-MT safe. Grabs and releases the #GstObject&apos;s LOCK for all objects
-in the hierarchy.">
-        <return-value transfer-ownership="full">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="save_thyself"
-              c:identifier="gst_object_save_thyself"
-              doc="Saves @object into the parent XML node.">
-        <return-value transfer-ownership="full">
-          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-        </return-value>
-        <parameters>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="restore_thyself"
-              c:identifier="gst_object_restore_thyself"
-              doc="Restores @object with the data from the parent XML node.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="self" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="default_error"
-              c:identifier="gst_object_default_error"
-              doc="A default error function.
-The default handler will simply print the error string using g_print.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="error" transfer-ownership="none">
-            <type name="GLib.Error" c:type="GError*"/>
-          </parameter>
-          <parameter name="debug" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <property name="name" writable="1" construct="1">
-        <type name="utf8" c:type="gchararray"/>
-      </property>
-      <field name="object">
-        <type name="GObject.Object" c:type="GObject"/>
-      </field>
-      <field name="refcount">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="lock">
-        <type name="GLib.Mutex" c:type="GMutex*"/>
-      </field>
-      <field name="name">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="name_prefix">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="parent">
-        <type name="Object" c:type="GstObject*"/>
-      </field>
-      <field name="flags">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="_gst_reserved">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <glib:signal name="deep-notify"
-                   doc="The deep notify signal is used to be notified of property changes. It is
-typically attached to the toplevel bin to receive notifications from all
-the elements contained in that bin.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="prop_object" transfer-ownership="none">
-            <type name="Object" c:type="GstObject"/>
-          </parameter>
-          <parameter name="prop" transfer-ownership="none">
-            <type name="GObject.ParamSpec" c:type="GParam"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="object-saved"
-                   doc="Trigered whenever a new object is saved to XML. You can connect to this
-signal to insert custom XML tags into the core XML.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="xml_node" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="parent-set"
-                   doc="Emitted when the parent of an object is set.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="Object" c:type="GstObject"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="parent-unset"
-                   doc="Emitted when the parent of an object is unset.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="Object" c:type="GstObject"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="ObjectClass"
-            c:type="GstObjectClass"
-            glib:is-gtype-struct-for="Object"
-            doc="GStreamer base object class.">
-      <field name="parent_class">
-        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
-      </field>
-      <field name="path_string_separator">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="signal_object">
-        <type name="GObject.Object" c:type="GObject*"/>
-      </field>
-      <field name="lock">
-        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
-      </field>
-      <field name="parent_set">
-        <callback name="parent_set" c:type="parent_set">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="parent_unset">
-        <callback name="parent_unset" c:type="parent_unset">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="object_saved">
-        <callback name="object_saved" c:type="object_saved">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="deep_notify">
-        <callback name="deep_notify" c:type="deep_notify">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="orig" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="pspec" transfer-ownership="none">
-              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="save_thyself">
-        <callback name="save_thyself" c:type="save_thyself">
-          <return-value transfer-ownership="full">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </return-value>
-          <parameters>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="parent" transfer-ownership="none">
-              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="restore_thyself">
-        <callback name="restore_thyself" c:type="restore_thyself">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="self" transfer-ownership="none">
-              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="ObjectFlags"
-              doc="not assigned to a bin)
-The standard flags that an gstobject may have."
-              c:type="GstObjectFlags">
-      <member name="disposing" value="1" c:identifier="GST_OBJECT_DISPOSING"/>
-      <member name="floating" value="2" c:identifier="GST_OBJECT_FLOATING"/>
-      <member name="flag_last" value="16" c:identifier="GST_OBJECT_FLAG_LAST"/>
-    </bitfield>
-    <constant name="PARAM_CONTROLLABLE" value="2">
-      <type name="int"/>
-    </constant>
-    <constant name="PARAM_MUTABLE_PAUSED" value="8">
-      <type name="int"/>
-    </constant>
-    <constant name="PARAM_MUTABLE_PLAYING" value="16">
-      <type name="int"/>
-    </constant>
-    <constant name="PARAM_MUTABLE_READY" value="4">
-      <type name="int"/>
-    </constant>
-    <constant name="PARAM_USER_SHIFT" value="256">
-      <type name="int"/>
-    </constant>
-    <class name="Pad"
-           c:type="GstPad"
-           doc="the pad.
-the data used in streaming.
-The #GstPad structure. Use the functions to update the variables."
-           parent="Object"
-           glib:type-name="GstPad"
-           glib:get-type="gst_pad_get_type"
-           glib:type-struct="PadClass">
-      <constructor name="new"
-                   c:identifier="gst_pad_new"
-                   doc="Creates a new pad with the given name in the given direction.
-If name is NULL, a guaranteed unique name (across all pads)
-will be assigned.
-This function makes a copy of the name so you can safely free the name.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="direction" transfer-ownership="none">
-            <type name="PadDirection" c:type="GstPadDirection"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_from_template"
-                   c:identifier="gst_pad_new_from_template"
-                   doc="Creates a new pad with the given name from the given template.
-If name is NULL, a guaranteed unique name (across all pads)
-will be assigned.
-This function makes a copy of the name so you can safely free the name.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="templ" transfer-ownership="none">
-            <type name="PadTemplate" c:type="GstPadTemplate*"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_from_static_template"
-                   c:identifier="gst_pad_new_from_static_template"
-                   doc="Creates a new pad with the given name from the given static template.
-If name is NULL, a guaranteed unique name (across all pads)
-will be assigned.
-This function makes a copy of the name so you can safely free the name.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-        <parameters>
-          <parameter name="templ" transfer-ownership="none">
-            <type name="StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <function name="load_and_link"
-                c:identifier="gst_pad_load_and_link"
-                doc="Reads the pad definition from the XML node and links the given pad
-in the element to a pad of an element up in the hierarchy.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="self" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="get_direction"
-              c:identifier="gst_pad_get_direction"
-              doc="Gets the direction of the pad. The direction of the pad is
-decided at construction time so this function does not take
-the LOCK.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="PadDirection" c:type="GstPadDirection"/>
-        </return-value>
-      </method>
-      <method name="set_active"
-              c:identifier="gst_pad_set_active"
-              doc="Activates or deactivates the given pad.
-Normally called from within core state change functions.
-If @active, makes sure the pad is active. If it is already active, either in
-push or pull mode, just return. Otherwise dispatches to the pad&apos;s activate
-function to perform the actual activation.
-If not @active, checks the pad&apos;s current mode and calls
-gst_pad_activate_push() or gst_pad_activate_pull(), as appropriate, with a
-FALSE argument.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="active" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_active"
-              c:identifier="gst_pad_is_active"
-              doc="Query if a pad is active
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="activate_pull"
-              c:identifier="gst_pad_activate_pull"
-              doc="Activates or deactivates the given pad in pull mode via dispatching to the
-pad&apos;s activatepullfunc. For use from within pad activation functions only.
-When called on sink pads, will first proxy the call to the peer pad, which
-is expected to activate its internally linked pads from within its
-activate_pull function.
-If you don&apos;t know what this is, you probably don&apos;t want to call it.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="active" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="activate_push"
-              c:identifier="gst_pad_activate_push"
-              doc="Activates or deactivates the given pad in push mode via dispatching to the
-pad&apos;s activatepushfunc. For use from within pad activation functions only.
-If you don&apos;t know what this is, you probably don&apos;t want to call it.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="active" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_blocked"
-              c:identifier="gst_pad_set_blocked"
-              doc="Blocks or unblocks the dataflow on a pad. This function is
-a shortcut for gst_pad_set_blocked_async() with a NULL
-callback.
-wrong parameters were passed or the pad was already in the requested state.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="blocked" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_blocked_async"
-              c:identifier="gst_pad_set_blocked_async"
-              doc="operation succeeds
-Blocks or unblocks the dataflow on a pad. The provided callback
-is called when the operation succeeds; this happens right before the next
-attempt at pushing a buffer on the pad.
-This can take a while as the pad can only become blocked when real dataflow
-is happening.
-When the pipeline is stalled, for example in PAUSED, this can
-take an indeterminate amount of time.
-You can pass NULL as the callback to make this call block. Be careful with
-this blocking call as it might not return for reasons stated above.
-wrong parameters were passed or the pad was already in the requested state.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="blocked" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="callback"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="3">
-            <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_blocked_async_full"
-              c:identifier="gst_pad_set_blocked_async_full"
-              doc="operation succeeds
-Blocks or unblocks the dataflow on a pad. The provided callback
-is called when the operation succeeds; this happens right before the next
-attempt at pushing a buffer on the pad.
-This can take a while as the pad can only become blocked when real dataflow
-is happening.
-When the pipeline is stalled, for example in PAUSED, this can
-take an indeterminate amount of time.
-You can pass NULL as the callback to make this call block. Be careful with
-this blocking call as it might not return for reasons stated above.
-wrong parameters were passed or the pad was already in the requested state.
-MT safe."
-              version="0.10.23">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="blocked" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="callback"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="3"
-                     destroy="4">
-            <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="destroy_data"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_blocked"
-              c:identifier="gst_pad_is_blocked"
-              doc="Checks if the pad is blocked or not. This function returns the
-last requested state of the pad. It is not certain that the pad
-is actually blocking at this point (see gst_pad_is_blocking()).
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="is_blocking"
-              c:identifier="gst_pad_is_blocking"
-              doc="Checks if the pad is blocking or not. This is a guaranteed state
-of whether the pad is actually blocking on a #GstBuffer or a #GstEvent.
-MT safe."
-              version="0.10.11">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_element_private"
-              c:identifier="gst_pad_set_element_private"
-              doc="Set the given private data gpointer on the pad.
-This function can only be used by the element that owns the pad.
-No locking is performed in this function.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="priv" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_element_private"
-              c:identifier="gst_pad_get_element_private"
-              doc="Gets the private data of a pad.
-No locking is performed in this function.">
-        <return-value transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </return-value>
-      </method>
-      <method name="get_pad_template"
-              c:identifier="gst_pad_get_pad_template"
-              doc="Gets the template for @pad.
-if this pad has no template.">
-        <return-value transfer-ownership="full">
-          <type name="PadTemplate" c:type="GstPadTemplate*"/>
-        </return-value>
-      </method>
-      <method name="set_bufferalloc_function"
-              c:identifier="gst_pad_set_bufferalloc_function"
-              doc="Sets the given bufferalloc function for the pad. Note that the
-bufferalloc function can only be set on sinkpads.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="bufalloc" transfer-ownership="none" scope="call">
-            <type name="PadBufferAllocFunction"
-                  c:type="GstPadBufferAllocFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="alloc_buffer"
-              c:identifier="gst_pad_alloc_buffer"
-              doc="Allocates a new, empty buffer optimized to push to pad @pad.  This
-function only works if @pad is a source pad and has a peer.
-A new, empty #GstBuffer will be put in the @buf argument.
-You need to check the caps of the buffer after performing this
-function and renegotiate to the format if needed. If the caps changed, it is
-possible that the buffer returned in @buf is not of the right size for the
-new format, @buf needs to be unreffed and reallocated if this is the case.
-result code other than #GST_FLOW_OK is an error and @buf should
-not be used.
-An error can occur if the pad is not connected or when the downstream
-peer elements cannot provide an acceptable buffer.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-          <parameter name="buf" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="alloc_buffer_and_set_caps"
-              c:identifier="gst_pad_alloc_buffer_and_set_caps"
-              doc="In addition to the function gst_pad_alloc_buffer(), this function
-automatically calls gst_pad_set_caps() when the caps of the
-newly allocated buffer are different from the @pad caps.
-After a renegotiation, the size of the new buffer returned in @buf could
-be of the wrong size for the new format and must be unreffed an reallocated
-in that case.
-result code other than #GST_FLOW_OK is an error and @buf should
-not be used.
-An error can occur if the pad is not connected or when the downstream
-peer elements cannot provide an acceptable buffer.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-          <parameter name="buf" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_activate_function"
-              c:identifier="gst_pad_set_activate_function"
-              doc="Sets the given activate function for @pad. The activate function will
-dispatch to gst_pad_activate_push() or gst_pad_activate_pull() to perform
-the actual activation. Only makes sense to set on sink pads.
-Call this function if your sink pad can start a pull-based task.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="activate" transfer-ownership="none" scope="call">
-            <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_activatepull_function"
-              c:identifier="gst_pad_set_activatepull_function"
-              doc="Sets the given activate_pull function for the pad. An activate_pull function
-prepares the element and any upstream connections for pulling. See XXX
-part-activation.txt for details.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="activatepull"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="PadActivateModeFunction"
-                  c:type="GstPadActivateModeFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_activatepush_function"
-              c:identifier="gst_pad_set_activatepush_function"
-              doc="Sets the given activate_push function for the pad. An activate_push function
-prepares the element for pushing. See XXX part-activation.txt for details.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="activatepush"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="PadActivateModeFunction"
-                  c:type="GstPadActivateModeFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_chain_function"
-              c:identifier="gst_pad_set_chain_function"
-              doc="Sets the given chain function for the pad. The chain function is called to
-process a #GstBuffer input buffer. see #GstPadChainFunction for more details.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="chain" transfer-ownership="none" scope="call">
-            <type name="PadChainFunction" c:type="GstPadChainFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_chain_list_function"
-              c:identifier="gst_pad_set_chain_list_function"
-              doc="Sets the given chain list function for the pad. The chainlist function is
-called to process a #GstBufferList input buffer list. See
-#GstPadChainListFunction for more details."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="chainlist" transfer-ownership="none" scope="call">
-            <type name="PadChainListFunction"
-                  c:type="GstPadChainListFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_getrange_function"
-              c:identifier="gst_pad_set_getrange_function"
-              doc="Sets the given getrange function for the pad. The getrange function is
-called to produce a new #GstBuffer to start the processing pipeline. see
-#GstPadGetRangeFunction for a description of the getrange function.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="get" transfer-ownership="none" scope="call">
-            <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_checkgetrange_function"
-              c:identifier="gst_pad_set_checkgetrange_function"
-              doc="Sets the given checkgetrange function for the pad. Implement this function
-on a pad if you dynamically support getrange based scheduling on the pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="check" transfer-ownership="none" scope="call">
-            <type name="PadCheckGetRangeFunction"
-                  c:type="GstPadCheckGetRangeFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_event_function"
-              c:identifier="gst_pad_set_event_function"
-              doc="Sets the given event handler for the pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="event" transfer-ownership="none" scope="call">
-            <type name="PadEventFunction" c:type="GstPadEventFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_link_function"
-              c:identifier="gst_pad_set_link_function"
-              doc="Sets the given link function for the pad. It will be called when
-the pad is linked with another pad.
-The return value #GST_PAD_LINK_OK should be used when the connection can be
-made.
-The return value #GST_PAD_LINK_REFUSED should be used when the connection
-cannot be made for some reason.
-If @link is installed on a source pad, it should call the #GstPadLinkFunction
-of the peer sink pad, if present.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="link" transfer-ownership="none" scope="call">
-            <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_unlink_function"
-              c:identifier="gst_pad_set_unlink_function"
-              doc="Sets the given unlink function for the pad. It will be called
-when the pad is unlinked.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="unlink" transfer-ownership="none" scope="call">
-            <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="can_link"
-              c:identifier="gst_pad_can_link"
-              doc="Checks if the source pad and the sink pad are compatible so they can be
-linked.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="sinkpad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="link"
-              c:identifier="gst_pad_link"
-              doc="Links the source pad and the sink pad.
-what went wrong.
-MT Safe.">
-        <return-value transfer-ownership="full">
-          <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="sinkpad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="unlink"
-              c:identifier="gst_pad_unlink"
-              doc="Unlinks the source pad from the sink pad. Will emit the #GstPad::unlinked
-signal on both pads.
-the pads were not linked together.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="sinkpad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="is_linked"
-              c:identifier="gst_pad_is_linked"
-              doc="Checks if a @pad is linked to another pad or not.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="get_peer"
-              c:identifier="gst_pad_get_peer"
-              doc="Gets the peer of @pad. This function refs the peer pad so
-you need to unref it after use.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Pad" c:type="GstPad*"/>
-        </return-value>
-      </method>
-      <method name="set_getcaps_function"
-              c:identifier="gst_pad_set_getcaps_function"
-              doc="Sets the given getcaps function for the pad. @getcaps should return the
-allowable caps for a pad in the context of the element&apos;s state, its link to
-other elements, and the devices or files it has opened. These caps must be a
-subset of the pad template caps. In the NULL state with no links, @getcaps
-should ideally return the same caps as the pad template. In rare
-circumstances, an object property can affect the caps returned by @getcaps,
-but this is discouraged.
-You do not need to call this function if @pad&apos;s allowed caps are always the
-same as the pad template caps. This can only be true if the padtemplate
-has fixed simple caps.
-For most filters, the caps returned by @getcaps is directly affected by the
-allowed caps on other pads. For demuxers and decoders, the caps returned by
-the srcpad&apos;s getcaps function is directly related to the stream data. Again,
-helps with autoplugging.
-Note that the return value from @getcaps is owned by the caller, so the
-caller should unref the caps after usage.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="getcaps" transfer-ownership="none" scope="call">
-            <type name="PadGetCapsFunction" c:type="GstPadGetCapsFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_acceptcaps_function"
-              c:identifier="gst_pad_set_acceptcaps_function"
-              doc="Sets the given acceptcaps function for the pad.  The acceptcaps function
-will be called to check if the pad can accept the given caps. Setting the
-acceptcaps function to NULL restores the default behaviour of allowing
-any caps that matches the caps from gst_pad_get_caps.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="acceptcaps" transfer-ownership="none" scope="call">
-            <type name="PadAcceptCapsFunction"
-                  c:type="GstPadAcceptCapsFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_fixatecaps_function"
-              c:identifier="gst_pad_set_fixatecaps_function"
-              doc="Sets the given fixatecaps function for the pad.  The fixatecaps function
-will be called whenever the default values for a GstCaps needs to be
-filled in.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fixatecaps" transfer-ownership="none" scope="call">
-            <type name="PadFixateCapsFunction"
-                  c:type="GstPadFixateCapsFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_setcaps_function"
-              c:identifier="gst_pad_set_setcaps_function"
-              doc="Sets the given setcaps function for the pad.  The setcaps function
-will be called whenever a buffer with a new media type is pushed or
-pulled from the pad. The pad/element needs to update its internal
-structures to process the new media type. If this new type is not
-acceptable, the setcaps function should return FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="setcaps" transfer-ownership="none" scope="call">
-            <type name="PadSetCapsFunction" c:type="GstPadSetCapsFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pad_template_caps"
-              c:identifier="gst_pad_get_pad_template_caps"
-              doc="Gets the capabilities for @pad&apos;s template.
-reference on the caps, make a copy (see gst_caps_copy ()).">
-        <return-value transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="get_caps_reffed"
-              c:identifier="gst_pad_get_caps_reffed"
-              doc="Gets the capabilities this pad can produce or consume. Preferred function if
-one only wants to read or intersect the caps."
-              version="0.10.26">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="get_caps"
-              c:identifier="gst_pad_get_caps"
-              doc="Gets the capabilities this pad can produce or consume.
-Note that this method doesn&apos;t necessarily return the caps set by
-gst_pad_set_caps() - use GST_PAD_CAPS() for that instead.
-gst_pad_get_caps returns all possible caps a pad can operate with, using
-the pad&apos;s get_caps function;
-this returns the pad template caps if not explicitly set.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="fixate_caps"
-              c:identifier="gst_pad_fixate_caps"
-              doc="Fixate a caps on the given pad. Modifies the caps in place, so you should
-make sure that the caps are actually writable (see gst_caps_make_writable()).">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="accept_caps"
-              c:identifier="gst_pad_accept_caps"
-              doc="Check if the given pad accepts the caps.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_caps"
-              c:identifier="gst_pad_set_caps"
-              doc="Sets the capabilities of this pad. The caps must be fixed. Any previous
-caps on the pad will be unreffed. This function refs the caps so you should
-unref if as soon as you don&apos;t need it anymore.
-It is possible to set NULL caps, which will make the pad unnegotiated
-again.
-or bad parameters were provided to this function.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="peer_get_caps_reffed"
-              c:identifier="gst_pad_peer_get_caps_reffed"
-              doc="Gets the capabilities of the peer connected to this pad. Preferred function
-if one only wants to read or intersect the caps."
-              version="0.10.26">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="peer_get_caps"
-              c:identifier="gst_pad_peer_get_caps"
-              doc="Gets the capabilities of the peer connected to this pad. Similar to
-gst_pad_get_caps().
-gst_caps_unref() to get rid of it. This function returns %NULL if there is
-no peer pad.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="peer_accept_caps"
-              c:identifier="gst_pad_peer_accept_caps"
-              doc="Check if the peer of @pad accepts @caps. If @pad has no peer, this function
-returns TRUE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_allowed_caps"
-              c:identifier="gst_pad_get_allowed_caps"
-              doc="Gets the capabilities of the allowed media types that can flow through
-The allowed capabilities is calculated as the intersection of the results of
-calling gst_pad_get_caps() on @pad and its peer. The caller owns a reference
-on the resulting caps.
-longer need it. This function returns NULL when @pad has no peer.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="get_negotiated_caps"
-              c:identifier="gst_pad_get_negotiated_caps"
-              doc="Gets the capabilities of the media type that currently flows through @pad
-and its peer.
-This function can be used on both src and sinkpads. Note that srcpads are
-always negotiated before sinkpads so it is possible that the negotiated caps
-on the srcpad do not match the negotiated caps of the peer.
-you no longer need it. This function returns NULL when the @pad has no
-peer or is not negotiated yet.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="push"
-              c:identifier="gst_pad_push"
-              doc="Pushes a buffer to the peer of @pad.
-This function will call an installed pad block before triggering any
-installed pad probes.
-If the caps on @buffer are different from the currently configured caps on
-gst_pad_set_setcaps_function()). In case of failure to renegotiate the new
-format, this function returns #GST_FLOW_NOT_NEGOTIATED.
-The function proceeds calling gst_pad_chain() on the peer pad and returns
-the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will
-be returned.
-In all cases, success or failure, the caller loses its reference to @buffer
-after calling this function.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="buffer" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="push_list"
-              c:identifier="gst_pad_push_list"
-              doc="Pushes a buffer list to the peer of @pad.
-This function will call an installed pad block before triggering any
-installed pad probes.
-If the caps on the first buffer in the first group of @list are different
-from the currently configured caps on @pad, this function will call any
-installed setcaps function on @pad (see gst_pad_set_setcaps_function()). In
-case of failure to renegotiate the new format, this function returns
-#GST_FLOW_NOT_NEGOTIATED.
-If there are any probes installed on @pad every group of the buffer list
-will be merged into a normal #GstBuffer and pushed via gst_pad_push and the
-buffer list will be unreffed.
-The function proceeds calling the chain function on the peer pad and returns
-the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will
-be returned. If the peer pad does not have any installed chainlist function
-every group buffer of the list will be merged into a normal #GstBuffer and
-chained via gst_pad_chain().
-In all cases, success or failure, the caller loses its reference to @list
-after calling this function.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="BufferList" c:type="GstBufferList*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="check_pull_range"
-              c:identifier="gst_pad_check_pull_range"
-              doc="Checks if a gst_pad_pull_range() can be performed on the peer
-source pad. This function is used by plugins that want to check
-if they can use random access on the peer source pad.
-The peer sourcepad can implement a custom #GstPadCheckGetRangeFunction
-if it needs to perform some logic to determine if pull_range is
-possible.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="pull_range"
-              c:identifier="gst_pad_pull_range"
-              doc="Pulls a @buffer from the peer pad.
-This function will first trigger the pad block signal if it was
-installed.
-When @pad is not linked #GST_FLOW_NOT_LINKED is returned else this
-function returns the result of gst_pad_get_range() on the peer pad.
-See gst_pad_get_range() for a list of return values and for the
-semantics of the arguments of this function.
-configured on @pad. Renegotiation within a running pull-mode pipeline is not
-supported.
-When this function returns #GST_FLOW_OK, @buffer will contain a valid
-#GstBuffer that should be freed with gst_buffer_unref() after usage.
-#GST_FLOW_OK is returned.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="buffer" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="push_event"
-              c:identifier="gst_pad_push_event"
-              doc="Sends the event to the peer of the given pad. This function is
-mainly used by elements to send events to their peer
-elements.
-This function takes owership of the provided event so you should
-gst_event_ref() it if you want to reuse the event after this call.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="event" transfer-ownership="none">
-            <type name="Event" c:type="GstEvent*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="event_default"
-              c:identifier="gst_pad_event_default"
-              doc="Invokes the default event handler for the given pad. End-of-stream and
-discontinuity events are handled specially, and then the event is sent to all
-pads internally linked to @pad. Note that if there are many possible sink
-pads that are internally linked to @pad, only one will be sent an event.
-Multi-sinkpad elements should implement custom event handlers.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="event" transfer-ownership="none">
-            <type name="Event" c:type="GstEvent*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="chain"
-              c:identifier="gst_pad_chain"
-              doc="Chain a buffer to @pad.
-The function returns #GST_FLOW_WRONG_STATE if the pad was flushing.
-If the caps on @buffer are different from the current caps on @pad, this
-function will call any setcaps function (see gst_pad_set_setcaps_function())
-installed on @pad. If the new caps are not acceptable for @pad, this
-function returns #GST_FLOW_NOT_NEGOTIATED.
-The function proceeds calling the chain function installed on @pad (see
-gst_pad_set_chain_function()) and the return value of that function is
-returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no
-chain function.
-In all cases, success or failure, the caller loses its reference to @buffer
-after calling this function.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="buffer" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="chain_list"
-              c:identifier="gst_pad_chain_list"
-              doc="Chain a bufferlist to @pad.
-The function returns #GST_FLOW_WRONG_STATE if the pad was flushing.
-If the caps on the first buffer of @list are different from the current
-caps on @pad, this function will call any setcaps function
-(see gst_pad_set_setcaps_function()) installed on @pad. If the new caps
-are not acceptable for @pad, this function returns #GST_FLOW_NOT_NEGOTIATED.
-The function proceeds calling the chainlist function installed on @pad (see
-gst_pad_set_chain_list_function()) and the return value of that function is
-returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no
-chainlist function.
-In all cases, success or failure, the caller loses its reference to @list
-after calling this function.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="BufferList" c:type="GstBufferList*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_range"
-              c:identifier="gst_pad_get_range"
-              doc="When @pad is flushing this function returns #GST_FLOW_WRONG_STATE
-immediatly.
-Calls the getrange function of @pad, see #GstPadGetRangeFunction for a
-description of a getrange function. If @pad has no getrange function
-installed (see gst_pad_set_getrange_function()) this function returns
-#GST_FLOW_NOT_SUPPORTED.
-This is a lowlevel function. Usualy gst_pad_pull_range() is used.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="uint64" c:type="guint64"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="buffer" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="send_event"
-              c:identifier="gst_pad_send_event"
-              doc="Sends the event to the pad. This function can be used
-by applications to send events in the pipeline.
-If @pad is a source pad, @event should be an upstream event. If @pad is a
-sink pad, @event should be a downstream event. For example, you would not
-send a #GST_EVENT_EOS on a src pad; EOS events only propagate downstream.
-Furthermore, some downstream events have to be serialized with data flow,
-like EOS, while some can travel out-of-band, like #GST_EVENT_FLUSH_START. If
-the event needs to be serialized with data flow, this function will take the
-pad&apos;s stream lock while calling its event function.
-To find out whether an event type is upstream, downstream, or downstream and
-serialized, see #GstEventTypeFlags, gst_event_type_get_flags(),
-#GST_EVENT_IS_UPSTREAM, #GST_EVENT_IS_DOWNSTREAM, and
-#GST_EVENT_IS_SERIALIZED. Note that in practice that an application or
-plugin doesn&apos;t need to bother itself with this information; the core handles
-all necessary locks and checks.
-This function takes owership of the provided event so you should
-gst_event_ref() it if you want to reuse the event after this call.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="event" transfer-ownership="none">
-            <type name="Event" c:type="GstEvent*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="start_task"
-              c:identifier="gst_pad_start_task"
-              doc="Starts a task that repeatedly calls @func with @data. This function
-is mostly used in pad activation functions to start the dataflow.
-The #GST_PAD_STREAM_LOCK of @pad will automatically be acquired
-before @func is called.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="TaskFunction" c:type="GstTaskFunction"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="pause_task"
-              c:identifier="gst_pad_pause_task"
-              doc="Pause the task of @pad. This function will also wait until the
-function executed by the task is finished if this function is not
-called from the task function.
-has no task.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="stop_task"
-              c:identifier="gst_pad_stop_task"
-              doc="Stop the task of @pad. This function will also make sure that the
-function executed by the task will effectively stop if not called
-from the GstTaskFunction.
-This function will deadlock if called from the GstTaskFunction of
-the task. Use gst_task_pause() instead.
-Regardless of whether the pad has a task, the stream lock is acquired and
-released so as to ensure that streaming through this pad has finished.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="set_internal_link_function"
-              c:identifier="gst_pad_set_internal_link_function"
-              doc="Sets the given internal link function for the pad."
-              deprecated="Use the thread-safe gst_pad_set_iterate_internal_links_function()">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="intlink" transfer-ownership="none" scope="call">
-            <type name="PadIntLinkFunction" c:type="GstPadIntLinkFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_internal_links"
-              c:identifier="gst_pad_get_internal_links"
-              doc="Gets a list of pads to which the given pad is linked to
-inside of the parent element.
-The caller must free this list after use.
-Not MT safe.
-could become invalid by the time the application accesses them. It&apos;s also
-possible that the list changes while handling the pads, which the caller of
-this function is unable to know. Use the thread-safe
-gst_pad_iterate_internal_links() instead."
-              deprecated="This function does not ref the pads in the list so that they">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <method name="get_internal_links_default"
-              c:identifier="gst_pad_get_internal_links_default"
-              doc="Gets a list of pads to which the given pad is linked to
-inside of the parent element.
-This is the default handler, and thus returns a list of all of the
-pads inside the parent element with opposite direction.
-The caller must free this list after use with g_list_free().
-Not MT safe.
-could become invalid by the time the application accesses them. It&apos;s also
-possible that the list changes while handling the pads, which the caller of
-this function is unable to know. Use the thread-safe
-gst_pad_iterate_internal_links_default() instead."
-              deprecated="This function does not ref the pads in the list so that they">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <method name="set_iterate_internal_links_function"
-              c:identifier="gst_pad_set_iterate_internal_links_function"
-              doc="Sets the given internal link iterator function for the pad."
-              version="0.10.21">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="iterintlink" transfer-ownership="none" scope="call">
-            <type name="PadIterIntLinkFunction"
-                  c:type="GstPadIterIntLinkFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="iterate_internal_links"
-              c:identifier="gst_pad_iterate_internal_links"
-              doc="Gets an iterator for the pads to which the given pad is linked to inside
-of the parent element.
-Each #GstPad element yielded by the iterator will have its refcount increased,
-so unref after use.
-iterator function configured. Use gst_iterator_free() after usage."
-              version="0.10.21">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="iterate_internal_links_default"
-              c:identifier="gst_pad_iterate_internal_links_default"
-              doc="Iterate the list of pads to which the given pad is linked to inside of
-the parent element.
-This is the default handler, and thus returns an iterator of all of the
-pads inside the parent element with opposite direction.
-The caller must free this iterator after use with gst_iterator_free().
-returned pad with gst_object_unref()."
-              version="0.10.21">
-        <return-value transfer-ownership="full">
-          <type name="Iterator" c:type="GstIterator*"/>
-        </return-value>
-      </method>
-      <method name="set_query_type_function"
-              c:identifier="gst_pad_set_query_type_function"
-              doc="Set the given query type function for the pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="type_func" transfer-ownership="none" scope="call">
-            <type name="PadQueryTypeFunction"
-                  c:type="GstPadQueryTypeFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_query_types"
-              c:identifier="gst_pad_get_query_types"
-              doc="Get an array of supported queries that can be performed
-on this pad.">
-        <return-value transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType*"/>
-        </return-value>
-      </method>
-      <method name="get_query_types_default"
-              c:identifier="gst_pad_get_query_types_default"
-              doc="Invoke the default dispatcher for the query types on
-the pad.
-internally-linked pads has a query types function.">
-        <return-value transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType*"/>
-        </return-value>
-      </method>
-      <method name="query"
-              c:identifier="gst_pad_query"
-              doc="Dispatches a query to a pad. The query should have been allocated by the
-caller via one of the type-specific allocation functions in gstquery.h. The
-element is responsible for filling the query with an appropriate response,
-which should then be parsed with a type-specific query parsing function.
-Again, the caller is responsible for both the allocation and deallocation of
-the query structure.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="query" transfer-ownership="none">
-            <type name="Query" c:type="GstQuery*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="peer_query"
-              c:identifier="gst_pad_peer_query"
-              doc="Performs gst_pad_query() on the peer of @pad.
-The caller is responsible for both the allocation and deallocation of
-the query structure.
-if @pad has no peer."
-              version="0.10.15">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="query" transfer-ownership="none">
-            <type name="Query" c:type="GstQuery*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_query_function"
-              c:identifier="gst_pad_set_query_function"
-              doc="Set the given query function for the pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="query" transfer-ownership="none" scope="call">
-            <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_default"
-              c:identifier="gst_pad_query_default"
-              doc="Invokes the default query handler for the given pad.
-The query is sent to all pads internally linked to @pad. Note that
-if there are many possible sink pads that are internally linked to
-Multi-sinkpad elements should implement custom query handlers.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="query" transfer-ownership="none">
-            <type name="Query" c:type="GstQuery*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="dispatcher"
-              c:identifier="gst_pad_dispatcher"
-              doc="Invokes the given dispatcher function on each respective peer of
-all pads that are internally linked to the given pad.
-The GstPadDispatcherFunction should return TRUE when no further pads
-need to be processed.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="dispatch"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="PadDispatcherFunction"
-                  c:type="GstPadDispatcherFunction"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="use_fixed_caps"
-              c:identifier="gst_pad_use_fixed_caps"
-              doc="A helper function you can use that sets the
-pad. This way the function will always return the negotiated caps
-or in case the pad is not negotiated, the padtemplate caps.
-Use this function on a pad that, once gst_pad_set_caps() has been called
-on it, cannot be renegotiated to something else.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_fixed_caps_func"
-              c:identifier="gst_pad_get_fixed_caps_func"
-              doc="A helper function you can use as a GetCaps function that
-will return the currently negotiated caps or the padtemplate
-when NULL.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="proxy_getcaps"
-              c:identifier="gst_pad_proxy_getcaps"
-              doc="Calls gst_pad_get_allowed_caps() for every other pad belonging to the
-same element as @pad, and returns the intersection of the results.
-This function is useful as a default getcaps function for an element
-that can handle any stream format, but requires all its pads to have
-the same caps.  Two such elements are tee and adder.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="proxy_setcaps" c:identifier="gst_pad_proxy_setcaps">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_parent_element"
-              c:identifier="gst_pad_get_parent_element"
-              doc="Gets the parent of @pad, cast to a #GstElement. If a @pad has no parent or
-its parent is not an element, return NULL.
-unref when you&apos;re finished with it.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-      </method>
-      <method name="query_position"
-              c:identifier="gst_pad_query_position"
-              doc="On return contains the #GstFormat used.
-Queries a pad for the stream position.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format"
-                     direction="inout"
-                     transfer-ownership="full"
-                     doc="a pointer to the #GstFormat asked for.">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="cur"
-                     direction="out"
-                     transfer-ownership="full"
-                     doc="A location in which to store the current position, or NULL.">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_duration"
-              c:identifier="gst_pad_query_duration"
-              doc="On return contains the #GstFormat used.
-Queries a pad for the total stream duration.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="duration" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_convert"
-              c:identifier="gst_pad_query_convert"
-              doc="Queries a pad to convert @src_val in @src_format to @dest_format.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="src_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="src_val" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="dest_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="dest_val" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_peer_position"
-              c:identifier="gst_pad_query_peer_position"
-              doc="Must be a sink pad.
-On return contains the #GstFormat used.
-Queries the peer of a given sink pad for the stream position.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="cur" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_peer_duration"
-              c:identifier="gst_pad_query_peer_duration"
-              doc="Must be a sink pad.
-On return contains the #GstFormat used.
-Queries the peer pad of a given sink pad for the total stream duration.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="duration" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="query_peer_convert"
-              c:identifier="gst_pad_query_peer_convert"
-              doc="Must be a sink pad.
-Queries the peer pad of a given sink pad to convert @src_val in @src_format
-to @dest_format.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="src_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="src_val" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="dest_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="dest_val" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_data_probe"
-              c:identifier="gst_pad_add_data_probe"
-              doc="Adds a &quot;data probe&quot; to a pad. This function will be called whenever data
-passes through a pad. In this case data means both events and buffers. The
-probe will be called with the data as an argument, meaning @handler should
-have the same callback signature as the #GstPad::have-data signal.
-Note that the data will have a reference count greater than 1, so it will
-be immutable -- you must not change it.
-For source pads, the probe will be called after the blocking function, if any
-(see gst_pad_set_blocked_async()), but before looking up the peer to chain
-to. For sink pads, the probe function will be called before configuring the
-sink with new caps, if any, and before calling the pad&apos;s chain function.
-Your data probe should return TRUE to let the data continue to flow, or FALSE
-to drop it. Dropping data is rarely useful, but occasionally comes in handy
-with events.
-Although probes are implemented internally by connecting @handler to the
-have-data signal on the pad, if you want to remove a probe it is insufficient
-to only call g_signal_handler_disconnect on the returned handler id. To
-remove a probe, use the appropriate function, such as
-gst_pad_remove_data_probe().">
-        <return-value transfer-ownership="none">
-          <type name="ulong" c:type="gulong"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="GObject.Callback" c:type="GCallback"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_data_probe_full"
-              c:identifier="gst_pad_add_data_probe_full"
-              doc="Adds a &quot;data probe&quot; to a pad. This function will be called whenever data
-passes through a pad. In this case data means both events and buffers. The
-probe will be called with the data as an argument, meaning @handler should
-have the same callback signature as the #GstPad::have-data signal.
-Note that the data will have a reference count greater than 1, so it will
-be immutable -- you must not change it.
-For source pads, the probe will be called after the blocking function, if any
-(see gst_pad_set_blocked_async()), but before looking up the peer to chain
-to. For sink pads, the probe function will be called before configuring the
-sink with new caps, if any, and before calling the pad&apos;s chain function.
-Your data probe should return TRUE to let the data continue to flow, or FALSE
-to drop it. Dropping data is rarely useful, but occasionally comes in handy
-with events.
-Although probes are implemented internally by connecting @handler to the
-have-data signal on the pad, if you want to remove a probe it is insufficient
-to only call g_signal_handler_disconnect on the returned handler id. To
-remove a probe, use the appropriate function, such as
-gst_pad_remove_data_probe().
-The @notify function is called when the probe is disconnected and usually
-used to free @data."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="ulong" c:type="gulong"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="2"
-                     destroy="3">
-            <type name="GObject.Callback" c:type="GCallback"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="notify" transfer-ownership="none" scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_data_probe"
-              c:identifier="gst_pad_remove_data_probe"
-              doc="Removes a data probe from @pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler_id" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_event_probe"
-              c:identifier="gst_pad_add_event_probe"
-              doc="Adds a probe that will be called for all events passing through a pad. See
-gst_pad_add_data_probe() for more information.">
-        <return-value transfer-ownership="none">
-          <type name="ulong" c:type="gulong"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="GObject.Callback" c:type="GCallback"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_event_probe_full"
-              c:identifier="gst_pad_add_event_probe_full"
-              doc="Adds a probe that will be called for all events passing through a pad. See
-gst_pad_add_data_probe() for more information.
-The @notify function is called when the probe is disconnected and usually
-used to free @data."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="ulong" c:type="gulong"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="2"
-                     destroy="3">
-            <type name="GObject.Callback" c:type="GCallback"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="notify" transfer-ownership="none" scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_event_probe"
-              c:identifier="gst_pad_remove_event_probe"
-              doc="Removes an event probe from @pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler_id" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_buffer_probe"
-              c:identifier="gst_pad_add_buffer_probe"
-              doc="Adds a probe that will be called for all buffers passing through a pad. See
-gst_pad_add_data_probe() for more information.">
-        <return-value transfer-ownership="none">
-          <type name="ulong" c:type="gulong"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="GObject.Callback" c:type="GCallback"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_buffer_probe_full"
-              c:identifier="gst_pad_add_buffer_probe_full"
-              doc="Adds a probe that will be called for all buffers passing through a pad. See
-gst_pad_add_data_probe() for more information.
-The @notify function is called when the probe is disconnected and usually
-used to free @data."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="ulong" c:type="gulong"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler"
-                     transfer-ownership="none"
-                     scope="notified"
-                     closure="2"
-                     destroy="3">
-            <type name="GObject.Callback" c:type="GCallback"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="notify" transfer-ownership="none" scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_buffer_probe"
-              c:identifier="gst_pad_remove_buffer_probe"
-              doc="Removes a buffer probe from @pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="handler_id" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <property name="caps">
-        <type name="Caps" c:type="GstCaps"/>
-      </property>
-      <property name="direction" writable="1" construct-only="1">
-        <type name="PadDirection" c:type="GstPadDirection"/>
-      </property>
-      <property name="template" writable="1">
-        <type name="PadTemplate" c:type="GstPadTemplate"/>
-      </property>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="element_private">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="padtemplate">
-        <type name="PadTemplate" c:type="GstPadTemplate*"/>
-      </field>
-      <field name="direction">
-        <type name="PadDirection" c:type="GstPadDirection"/>
-      </field>
-      <field name="stream_rec_lock">
-        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
-      </field>
-      <field name="task">
-        <type name="Task" c:type="GstTask*"/>
-      </field>
-      <field name="preroll_lock">
-        <type name="GLib.Mutex" c:type="GMutex*"/>
-      </field>
-      <field name="preroll_cond">
-        <type name="GLib.Cond" c:type="GCond*"/>
-      </field>
-      <field name="block_cond">
-        <type name="GLib.Cond" c:type="GCond*"/>
-      </field>
-      <field name="block_callback">
-        <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
-      </field>
-      <field name="block_data">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="caps">
-        <type name="Caps" c:type="GstCaps*"/>
-      </field>
-      <field name="getcapsfunc">
-        <type name="PadGetCapsFunction" c:type="GstPadGetCapsFunction"/>
-      </field>
-      <field name="setcapsfunc">
-        <type name="PadSetCapsFunction" c:type="GstPadSetCapsFunction"/>
-      </field>
-      <field name="acceptcapsfunc">
-        <type name="PadAcceptCapsFunction" c:type="GstPadAcceptCapsFunction"/>
-      </field>
-      <field name="fixatecapsfunc">
-        <type name="PadFixateCapsFunction" c:type="GstPadFixateCapsFunction"/>
-      </field>
-      <field name="activatefunc">
-        <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
-      </field>
-      <field name="activatepushfunc">
-        <type name="PadActivateModeFunction"
-              c:type="GstPadActivateModeFunction"/>
-      </field>
-      <field name="activatepullfunc">
-        <type name="PadActivateModeFunction"
-              c:type="GstPadActivateModeFunction"/>
-      </field>
-      <field name="linkfunc">
-        <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
-      </field>
-      <field name="unlinkfunc">
-        <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
-      </field>
-      <field name="peer">
-        <type name="Pad" c:type="GstPad*"/>
-      </field>
-      <field name="sched_private">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="chainfunc">
-        <type name="PadChainFunction" c:type="GstPadChainFunction"/>
-      </field>
-      <field name="checkgetrangefunc">
-        <type name="PadCheckGetRangeFunction"
-              c:type="GstPadCheckGetRangeFunction"/>
-      </field>
-      <field name="getrangefunc">
-        <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
-      </field>
-      <field name="eventfunc">
-        <type name="PadEventFunction" c:type="GstPadEventFunction"/>
-      </field>
-      <field name="mode">
-        <type name="ActivateMode" c:type="GstActivateMode"/>
-      </field>
-      <field name="querytypefunc">
-        <type name="PadQueryTypeFunction" c:type="GstPadQueryTypeFunction"/>
-      </field>
-      <field name="queryfunc">
-        <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
-      </field>
-      <field name="intlinkfunc">
-        <type name="PadIntLinkFunction" c:type="GstPadIntLinkFunction"/>
-      </field>
-      <field name="bufferallocfunc">
-        <type name="PadBufferAllocFunction"
-              c:type="GstPadBufferAllocFunction"/>
-      </field>
-      <field name="do_buffer_signals">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="do_event_signals">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="iterintlinkfunc">
-        <type name="PadIterIntLinkFunction"
-              c:type="GstPadIterIntLinkFunction"/>
-      </field>
-      <field name="block_destroy_data">
-        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-      </field>
-      <union name="abidata" c:type="abidata">
-        <record name="ABI" c:type="ABI">
-          <field name="block_callback_called" writable="1">
-            <type name="boolean" c:type="gboolean"/>
-          </field>
-          <field name="priv" writable="1">
-            <type name="PadPrivate" c:type="GstPadPrivate*"/>
-          </field>
-        </record>
-        <field name="_gst_reserved" writable="1">
-          <array zero-terminated="0" c:type="gpointer" fixed-size="2">
-            <type name="any"/>
-          </array>
-        </field>
-      </union>
-      <glib:signal name="have-data"
-                   doc="Signals that new data is available on the pad. This signal is used
-internally for implementing pad probes.
-See gst_pad_add_*_probe functions.">
-        <return-value transfer-ownership="full">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="mini_obj" transfer-ownership="none">
-            <type name="MiniObject" c:type="GstMiniObject"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="linked"
-                   doc="Signals that a pad has been linked to the peer pad.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="peer" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="request-link"
-                   doc="Signals that a pad connection has been requested.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </glib:signal>
-      <glib:signal name="unlinked"
-                   doc="Signals that a pad has been unlinked from the peer pad.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="peer" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <callback name="PadAcceptCapsFunction"
-              c:type="GstPadAcceptCapsFunction"
-              doc="Check if @pad can accept @caps. By default this function will see if @caps
-intersect with the result from gst_pad_get_caps() by can be overridden to
-perform extra checks.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="caps" transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadActivateFunction"
-              c:type="GstPadActivateFunction"
-              doc="This function is called when the pad is activated during the element
-READY to PAUSED state change. By default this function will call the
-activate function that puts the pad in push mode but elements can
-override this function to activate the pad in pull mode if they wish.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadActivateModeFunction"
-              c:type="GstPadActivateModeFunction"
-              doc="The prototype of the push and pull activate functions.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="active" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadBlockCallback"
-              c:type="GstPadBlockCallback"
-              doc="Callback used by gst_pad_set_blocked_async(). Gets called when the blocking
-operation succeeds.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="blocked" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadBufferAllocFunction"
-              c:type="GstPadBufferAllocFunction"
-              doc="Ask the sinkpad @pad to allocate a buffer with @offset, @size and @caps.
-The result will be stored in @buf.
-The purpose of this function is to allocate a buffer that is optimal to
-be processed by @pad. The function is mostly overridden by elements that can
-provide a hardware buffer in order to avoid additional memcpy operations.
-The function can return a buffer that has caps different from the requested
-new caps.
-If a format change was requested, the returned buffer will be one to hold
-the data of said new caps, so its size might be different from the requested
-When this function returns anything else than #GST_FLOW_OK, the buffer allocation
-failed and @buf does not contain valid data. If the function returns #GST_FLOW_OK and
-the @buf is NULL, a #GstBuffer will be created with @caps, @offset and @size.
-By default this function returns a new buffer of @size and with @caps containing
-purely malloced data. The buffer should be freed with gst_buffer_unref()
-after usage.
-value means @buf does not hold a valid buffer.">
-      <return-value transfer-ownership="full">
-        <type name="FlowReturn" c:type="GstFlowReturn"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="offset" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="size" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="caps" transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </parameter>
-        <parameter name="buf" transfer-ownership="none">
-          <type name="Buffer" c:type="GstBuffer**"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadChainFunction"
-              c:type="GstPadChainFunction"
-              doc="A function that will be called on sinkpads when chaining buffers.
-The function typically processes the data contained in the buffer and
-either consumes the data or passes it on to the internally linked pad(s).
-The implementer of this function receives a refcount to @buffer and should
-gst_buffer_unref() when the buffer is no longer needed.
-When a chain function detects an error in the data stream, it must post an
-error on the bus and return an appropriate #GstFlowReturn value.">
-      <return-value transfer-ownership="full">
-        <type name="FlowReturn" c:type="GstFlowReturn"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="buffer" transfer-ownership="none">
-          <type name="Buffer" c:type="GstBuffer*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadChainListFunction"
-              c:type="GstPadChainListFunction"
-              doc="A function that will be called on sinkpads when chaining buffer lists.
-The function typically processes the data contained in the buffer list and
-either consumes the data or passes it on to the internally linked pad(s).
-The implementer of this function receives a refcount to @list and
-should gst_buffer_list_unref() when the list is no longer needed.
-When a chainlist function detects an error in the data stream, it must
-post an error on the bus and return an appropriate #GstFlowReturn value.">
-      <return-value transfer-ownership="full">
-        <type name="FlowReturn" c:type="GstFlowReturn"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="list" transfer-ownership="none">
-          <type name="BufferList" c:type="GstBufferList*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadCheckGetRangeFunction"
-              c:type="GstPadCheckGetRangeFunction"
-              doc="Check if @pad can be activated in pull mode.
-This function will be deprecated after 0.10; use the seeking query to check
-if a pad can support random access.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="PadClass"
-            c:type="GstPadClass"
-            glib:is-gtype-struct-for="Pad">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="linked">
-        <callback name="linked" c:type="linked">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-            <parameter name="peer" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="unlinked">
-        <callback name="unlinked" c:type="unlinked">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-            <parameter name="peer" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="request_link">
-        <callback name="request_link" c:type="request_link">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="have_data">
-        <callback name="have_data" c:type="have_data">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-            <parameter name="data" transfer-ownership="none">
-              <type name="MiniObject" c:type="GstMiniObject*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <enumeration name="PadDirection"
-                 doc="The direction of a pad."
-                 c:type="GstPadDirection">
-      <member name="unknown" value="0" c:identifier="GST_PAD_UNKNOWN"/>
-      <member name="src" value="1" c:identifier="GST_PAD_SRC"/>
-      <member name="sink" value="2" c:identifier="GST_PAD_SINK"/>
-    </enumeration>
-    <callback name="PadDispatcherFunction"
-              c:type="GstPadDispatcherFunction"
-              doc="A dispatcher function is called for all internally linked pads, see
-gst_pad_dispatcher().">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadEventFunction"
-              c:type="GstPadEventFunction"
-              doc="Function signature to handle an event for the pad.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="event" transfer-ownership="none">
-          <type name="Event" c:type="GstEvent*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadFixateCapsFunction"
-              c:type="GstPadFixateCapsFunction"
-              doc="Given possibly unfixed caps @caps, let @pad use its default prefered
-format to make a fixed caps. @caps should be writable. By default this
-function will pick the first value of any ranges or lists in the caps but
-elements can override this function to perform other behaviour.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="caps" transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <bitfield name="PadFlags" doc="Pad state flags" c:type="GstPadFlags">
-      <member name="blocked" value="16" c:identifier="GST_PAD_BLOCKED"/>
-      <member name="flushing" value="32" c:identifier="GST_PAD_FLUSHING"/>
-      <member name="in_getcaps" value="64" c:identifier="GST_PAD_IN_GETCAPS"/>
-      <member name="in_setcaps" value="128" c:identifier="GST_PAD_IN_SETCAPS"/>
-      <member name="blocking" value="256" c:identifier="GST_PAD_BLOCKING"/>
-      <member name="flag_last" value="4096" c:identifier="GST_PAD_FLAG_LAST"/>
-    </bitfield>
-    <callback name="PadGetCapsFunction"
-              c:type="GstPadGetCapsFunction"
-              doc="Returns a copy of the capabilities of the specified pad. By default this
-function will return the pad template capabilities, but can optionally
-be overridden by elements.">
-      <return-value transfer-ownership="full">
-        <type name="Caps" c:type="GstCaps*"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadGetRangeFunction"
-              c:type="GstPadGetRangeFunction"
-              doc="This function will be called on source pads when a peer element
-request a buffer at the specified @offset and @length. If this function
-returns #GST_FLOW_OK, the result buffer will be stored in @buffer. The
-contents of @buffer is invalid for any other return value.
-This function is installed on a source pad with
-gst_pad_set_getrange_function() and can only be called on source pads after
-they are successfully activated with gst_pad_activate_pull().
-between 0 and the length in bytes of the data available on @pad. The
-length (duration in bytes) can be retrieved with a #GST_QUERY_DURATION or with a
-#GST_QUERY_SEEKING.
-Any @offset larger or equal than the length will make the function return
-#GST_FLOW_UNEXPECTED, which corresponds to EOS. In this case @buffer does not
-contain a valid buffer.
-The buffer size of @buffer might be smaller than @length when @offset is near
-the end of the stream.
-It is allowed to call this function with a 0 @length and valid @offset, in
-which case @buffer will contain a 0-sized buffer and the function returns
-#GST_FLOW_OK.
-When this function is called with a -1 @offset, the sequentially next buffer
-of length @length in the stream is returned.
-When this function is called with a -1 @length, a buffer with a default
-optimal length is returned in @buffer. The length might depend on the value
-of @offset.">
-      <return-value transfer-ownership="full">
-        <type name="FlowReturn" c:type="GstFlowReturn"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="offset" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="length" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="buffer" transfer-ownership="none">
-          <type name="Buffer" c:type="GstBuffer**"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadIntLinkFunction"
-              c:type="GstPadIntLinkFunction"
-              doc="The signature of the internal pad link function.
-the inside of the parent element.
-The caller must call g_list_free() on it after use."
-              deprecated="use the threadsafe #GstPadIterIntLinkFunction instead.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.List" c:type="GList*"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadIterIntLinkFunction"
-              c:type="GstPadIterIntLinkFunction"
-              doc="The signature of the internal pad link iterator function.
-linked to the given pad on the inside of the parent element.
-the caller must call gst_iterator_free() after usage.
-Since 0.10.21">
-      <return-value transfer-ownership="full">
-        <type name="Iterator" c:type="GstIterator*"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadLinkFunction" c:type="GstPadLinkFunction">
-      <return-value transfer-ownership="full">
-        <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="peer" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="PadLinkReturn"
-                 doc="Result values from gst_pad_link and friends."
-                 c:type="GstPadLinkReturn">
-      <member name="ok" value="0" c:identifier="GST_PAD_LINK_OK"/>
-      <member name="wrong_hierarchy"
-              value="-1"
-              c:identifier="GST_PAD_LINK_WRONG_HIERARCHY"/>
-      <member name="was_linked"
-              value="-2"
-              c:identifier="GST_PAD_LINK_WAS_LINKED"/>
-      <member name="wrong_direction"
-              value="-3"
-              c:identifier="GST_PAD_LINK_WRONG_DIRECTION"/>
-      <member name="noformat" value="-4" c:identifier="GST_PAD_LINK_NOFORMAT"/>
-      <member name="nosched" value="-5" c:identifier="GST_PAD_LINK_NOSCHED"/>
-      <member name="refused" value="-6" c:identifier="GST_PAD_LINK_REFUSED"/>
-    </enumeration>
-    <enumeration name="PadPresence"
-                 doc="gst_element_get_request_pad().
-Indicates when this pad will become available."
-                 c:type="GstPadPresence">
-      <member name="always" value="0" c:identifier="GST_PAD_ALWAYS"/>
-      <member name="sometimes" value="1" c:identifier="GST_PAD_SOMETIMES"/>
-      <member name="request" value="2" c:identifier="GST_PAD_REQUEST"/>
-    </enumeration>
-    <record name="PadPrivate" c:type="GstPadPrivate">
-    </record>
-    <callback name="PadQueryFunction"
-              c:type="GstPadQueryFunction"
-              doc="The signature of the query function.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="query" transfer-ownership="none">
-          <type name="Query" c:type="GstQuery*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadQueryTypeFunction"
-              c:type="GstPadQueryTypeFunction"
-              doc="The signature of the query types function.">
-      <return-value transfer-ownership="none">
-        <type name="QueryType" c:type="GstQueryType*"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PadSetCapsFunction"
-              c:type="GstPadSetCapsFunction"
-              doc="Set @caps on @pad. By default this function updates the caps of the
-pad but the function can be overriden by elements to perform extra
-actions or verifications.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-        <parameter name="caps" transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <class name="PadTemplate"
-           c:type="GstPadTemplate"
-           doc="The padtemplate object."
-           parent="Object"
-           glib:type-name="GstPadTemplate"
-           glib:get-type="gst_pad_template_get_type"
-           glib:type-struct="PadTemplateClass">
-      <constructor name="new"
-                   c:identifier="gst_pad_template_new"
-                   doc="Creates a new pad template with a name according to the given template
-and with the given arguments. This functions takes ownership of the provided
-caps, so be sure to not use them afterwards.">
-        <return-value transfer-ownership="full">
-          <type name="PadTemplate" c:type="GstPadTemplate*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name_template" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="direction" transfer-ownership="none">
-            <type name="PadDirection" c:type="GstPadDirection"/>
-          </parameter>
-          <parameter name="presence" transfer-ownership="none">
-            <type name="PadPresence" c:type="GstPadPresence"/>
-          </parameter>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="get_caps"
-              c:identifier="gst_pad_template_get_caps"
-              doc="Gets the capabilities of the pad template.
-the caps, take a ref (see gst_caps_ref ()).">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="pad_created"
-              c:identifier="gst_pad_template_pad_created"
-              doc="Emit the pad-created signal for this template when created by this pad.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <property name="caps" writable="1" construct-only="1">
-        <type name="Caps" c:type="GstCaps"/>
-      </property>
-      <property name="direction" writable="1" construct-only="1">
-        <type name="PadDirection" c:type="GstPadDirection"/>
-      </property>
-      <property name="name-template" writable="1" construct-only="1">
-        <type name="utf8" c:type="gchararray"/>
-      </property>
-      <property name="presence" writable="1" construct-only="1">
-        <type name="PadPresence" c:type="GstPadPresence"/>
-      </property>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="name_template">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="direction">
-        <type name="PadDirection" c:type="GstPadDirection"/>
-      </field>
-      <field name="presence">
-        <type name="PadPresence" c:type="GstPadPresence"/>
-      </field>
-      <field name="caps">
-        <type name="Caps" c:type="GstCaps*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <glib:signal name="pad-created"
-                   doc="This signal is fired when an element creates a pad from this template.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pad" transfer-ownership="none">
-            <type name="Pad" c:type="GstPad"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="PadTemplateClass"
-            c:type="GstPadTemplateClass"
-            glib:is-gtype-struct-for="PadTemplate">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="pad_created">
-        <callback name="pad_created" c:type="pad_created">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="templ" transfer-ownership="none">
-              <type name="PadTemplate" c:type="GstPadTemplate*"/>
-            </parameter>
-            <parameter name="pad" transfer-ownership="none">
-              <type name="Pad" c:type="GstPad*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="PadTemplateFlags"
-              doc="Flags for the padtemplate"
-              c:type="GstPadTemplateFlags">
-      <member name="fixed" value="16" c:identifier="GST_PAD_TEMPLATE_FIXED"/>
-      <member name="flag_last"
-              value="256"
-              c:identifier="GST_PAD_TEMPLATE_FLAG_LAST"/>
-    </bitfield>
-    <callback name="PadUnlinkFunction" c:type="GstPadUnlinkFunction">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="ParamSpecFraction"
-            c:type="GstParamSpecFraction"
-            doc="A GParamSpec derived structure that contains the meta data for fractional
-properties.">
-      <field name="parent_instance" writable="1">
-        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
-      </field>
-      <field name="min_num" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="min_den" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="max_num" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="max_den" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="def_num" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="def_den" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-    </record>
-    <record name="ParamSpecMiniObject"
-            c:type="GstParamSpecMiniObject"
-            doc="A %GParamSpec derived structure that contains the meta data
-for %GstMiniObject properties.">
-      <field name="parent_instance" writable="1">
-        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
-      </field>
-    </record>
-    <record name="ParseContext"
-            c:type="GstParseContext"
-            doc="Opaque structure."
-            version="0.10.20">
-      <constructor name="new"
-                   c:identifier="gst_parse_context_new"
-                   doc="Allocates a parse context for use with gst_parse_launch_full() or
-gst_parse_launchv_full().
-when no longer needed."
-                   version="0.10.20">
-        <return-value transfer-ownership="full">
-          <type name="ParseContext" c:type="GstParseContext*"/>
-        </return-value>
-      </constructor>
-      <method name="get_missing_elements"
-              c:identifier="gst_parse_context_get_missing_elements"
-              doc="Retrieve missing elements from a previous run of gst_parse_launch_full()
-or gst_parse_launchv_full(). Will only return results if an error code
-of %GST_PARSE_ERROR_NO_SUCH_ELEMENT was returned.
-missing elements. Free with g_strfreev() when no longer needed."
-              version="0.10.20">
-        <return-value transfer-ownership="full">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="gst_parse_context_free"
-              doc="Frees a parse context previously allocated with gst_parse_context_new()."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-    </record>
-    <enumeration name="ParseError"
-                 doc="The different parsing errors that can occur."
-                 c:type="GstParseError"
-                 glib:error-quark="gst_parse_error_quark">
-      <member name="syntax" value="0" c:identifier="GST_PARSE_ERROR_SYNTAX"/>
-      <member name="no_such_element"
-              value="1"
-              c:identifier="GST_PARSE_ERROR_NO_SUCH_ELEMENT"/>
-      <member name="no_such_property"
-              value="2"
-              c:identifier="GST_PARSE_ERROR_NO_SUCH_PROPERTY"/>
-      <member name="link" value="3" c:identifier="GST_PARSE_ERROR_LINK"/>
-      <member name="could_not_set_property"
-              value="4"
-              c:identifier="GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY"/>
-      <member name="empty_bin"
-              value="5"
-              c:identifier="GST_PARSE_ERROR_EMPTY_BIN"/>
-      <member name="empty" value="6" c:identifier="GST_PARSE_ERROR_EMPTY"/>
-    </enumeration>
-    <bitfield name="ParseFlags"
-              doc="(default behaviour is to return partially constructed bins or elements
-in some cases)
-Parsing options."
-              version="0.10.20"
-              c:type="GstParseFlags">
-      <member name="none" value="0" c:identifier="GST_PARSE_FLAG_NONE"/>
-      <member name="fatal_errors"
-              value="1"
-              c:identifier="GST_PARSE_FLAG_FATAL_ERRORS"/>
-    </bitfield>
-    <class name="Pipeline"
-           c:type="GstPipeline"
-           doc="GST_PIPELINE_FLAG_FIXED_CLOCK is set.
-property would be the running_time, the total time spent in the
-PLAYING state without being flushed. (deprecated, use the start_time
-on GstElement).
-when setting elements to PLAYING.
-The #GstPipeline structure."
-           parent="Bin"
-           glib:type-name="GstPipeline"
-           glib:get-type="gst_pipeline_get_type"
-           glib:type-struct="PipelineClass">
-      <implements name="ChildProxy"/>
-      <constructor name="new"
-                   c:identifier="gst_pipeline_new"
-                   doc="Create a new pipeline with the given name.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Pipeline" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="get_bus"
-              c:identifier="gst_pipeline_get_bus"
-              doc="Gets the #GstBus of @pipeline. The bus allows applications to receive
-#GstMessage packets.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Bus" c:type="GstBus*"/>
-        </return-value>
-      </method>
-      <method name="set_new_stream_time"
-              c:identifier="gst_pipeline_set_new_stream_time"
-              doc="Set the new start time of @pipeline to @time. The start time is used to
-set the base time on the elements (see gst_element_set_base_time())
-in the PAUSED-&gt;PLAYING state transition.
-Setting @time to #GST_CLOCK_TIME_NONE will disable the pipeline&apos;s management
-of element base time. The application will then be responsible for
-performing base time distribution. This is sometimes useful if you want to
-synchronize capture from multiple pipelines, and you can also ensure that the
-pipelines have the same clock.
-MT safe.
-gst_element_set_start_time()."
-              deprecated="This function has the wrong name and is equivalent to">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="time" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_last_stream_time"
-              c:identifier="gst_pipeline_get_last_stream_time"
-              doc="Gets the last running time of @pipeline. If the pipeline is PLAYING,
-the returned time is the running time used to configure the element&apos;s
-base time in the PAUSED-&gt;PLAYING state. If the pipeline is PAUSED, the
-returned time is the running time when the pipeline was paused.
-This function returns #GST_CLOCK_TIME_NONE if the pipeline was
-configured to not handle the management of the element&apos;s base time
-(see gst_pipeline_set_new_stream_time()).
-MT safe.
-gst_element_get_start_time()."
-              deprecated="This function has the wrong name and is equivalent to">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="use_clock"
-              c:identifier="gst_pipeline_use_clock"
-              doc="Force @pipeline to use the given @clock. The pipeline will
-always use the given clock even if new clock providers are added
-to this pipeline.
-If @clock is NULL all clocking will be disabled which will make
-the pipeline run as fast as possible.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_clock"
-              c:identifier="gst_pipeline_set_clock"
-              doc="Set the clock for @pipeline. The clock will be distributed
-to all the elements managed by the pipeline.
-some element did not accept the clock.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="clock" transfer-ownership="none">
-            <type name="Clock" c:type="GstClock*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_clock"
-              c:identifier="gst_pipeline_get_clock"
-              doc="Gets the current clock used by @pipeline.">
-        <return-value transfer-ownership="full">
-          <type name="Clock" c:type="GstClock*"/>
-        </return-value>
-      </method>
-      <method name="auto_clock"
-              c:identifier="gst_pipeline_auto_clock"
-              doc="Let @pipeline select a clock automatically. This is the default
-behaviour.
-Use this function if you previous forced a fixed clock with
-gst_pipeline_use_clock() and want to restore the default
-pipeline clock selection algorithm.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="set_delay"
-              c:identifier="gst_pipeline_set_delay"
-              doc="Set the expected delay needed for all elements to perform the
-PAUSED to PLAYING state change. @delay will be added to the
-base time of the elements so that they wait an additional @delay
-amount of time before starting to process buffers and cannot be
-#GST_CLOCK_TIME_NONE.
-This option is used for tuning purposes and should normally not be
-used.
-MT safe."
-              version="0.10.5">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="delay" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_delay"
-              c:identifier="gst_pipeline_get_delay"
-              doc="Get the configured delay (see gst_pipeline_set_delay()).
-MT safe."
-              version="0.10.5">
-        <return-value transfer-ownership="full">
-          <type name="ClockTime" c:type="GstClockTime"/>
-        </return-value>
-      </method>
-      <method name="set_auto_flush_bus"
-              c:identifier="gst_pipeline_set_auto_flush_bus"
-              doc="the pipeline goes from READY to NULL state
-Usually, when a pipeline goes from READY to NULL state, it automatically
-flushes all pending messages on the bus, which is done for refcounting
-purposes, to break circular references.
-This means that applications that update state using (async) bus messages
-(e.g. do certain things when a pipeline goes from PAUSED to READY) might
-not get to see messages when the pipeline is shut down, because they might
-be flushed before they can be dispatched in the main thread. This behaviour
-can be disabled using this function.
-It is important that all messages on the bus are handled when the
-automatic flushing is disabled else memory leaks will be introduced.
-MT safe."
-              version="0.10.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="auto_flush" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_auto_flush_bus"
-              c:identifier="gst_pipeline_get_auto_flush_bus"
-              doc="Check if @pipeline will automatically flush messages when going to
-the NULL state.
-going from READY to NULL state or not.
-MT safe."
-              version="0.10.4">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <property name="auto-flush-bus"
-                version="0.10.4"
-                writable="1"
-                doc="Whether or not to automatically flush all messages on the
-pipeline&apos;s bus when going from READY to NULL state. Please see
-gst_pipeline_set_auto_flush_bus() for more information on this option.">
-        <type name="boolean" c:type="gboolean"/>
-      </property>
-      <property name="delay" writable="1">
-        <type name="uint64" c:type="guint64"/>
-      </property>
-      <field name="bin">
-        <type name="Bin" c:type="GstBin"/>
-      </field>
-      <field name="fixed_clock">
-        <type name="Clock" c:type="GstClock*"/>
-      </field>
-      <field name="stream_time">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="delay">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </field>
-      <field name="priv">
-        <type name="PipelinePrivate" c:type="GstPipelinePrivate*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="PipelineClass"
-            c:type="GstPipelineClass"
-            glib:is-gtype-struct-for="Pipeline">
-      <field name="parent_class">
-        <type name="BinClass" c:type="GstBinClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="PipelineFlags"
-              doc="Pipeline flags"
-              c:type="GstPipelineFlags">
-      <member name="fixed_clock"
-              value="33554432"
-              c:identifier="GST_PIPELINE_FLAG_FIXED_CLOCK"/>
-      <member name="last"
-              value="536870912"
-              c:identifier="GST_PIPELINE_FLAG_LAST"/>
-    </bitfield>
-    <record name="PipelinePrivate" c:type="GstPipelinePrivate">
-    </record>
-    <class name="Plugin"
-           c:type="GstPlugin"
-           doc="The plugin object"
-           parent="Object"
-           glib:type-name="GstPlugin"
-           glib:get-type="gst_plugin_get_type"
-           glib:type-struct="PluginClass">
-      <function name="register_static"
-                c:identifier="gst_plugin_register_static"
-                doc="plugin was compiled for, you can just use GST_VERSION_MAJOR here
-plugin was compiled for, you can just use GST_VERSION_MINOR here
-library-specific namespace prefix in order to avoid name conflicts in
-case a similar plugin with the same name ever gets added to GStreamer)
-(see #GstPluginDesc above) or the plugin will not be registered.
-Registers a static plugin, ie. a plugin which is private to an application
-or library and contained within the application or library (as opposed to
-being shipped as a separate module file).
-You must make sure that GStreamer has been initialised (with gst_init() or
-via gst_init_get_option_group()) before calling this function."
-                version="0.10.16">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="major_version" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="minor_version" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="description" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="init_func" transfer-ownership="none" scope="call">
-            <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
-          </parameter>
-          <parameter name="version" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="license" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="source" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="package" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="origin" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="register_static_full"
-                c:identifier="gst_plugin_register_static_full"
-                doc="plugin was compiled for, you can just use GST_VERSION_MAJOR here
-plugin was compiled for, you can just use GST_VERSION_MINOR here
-library-specific namespace prefix in order to avoid name conflicts in
-case a similar plugin with the same name ever gets added to GStreamer)
-(see #GstPluginDesc above) or the plugin will not be registered.
-Registers a static plugin, ie. a plugin which is private to an application
-or library and contained within the application or library (as opposed to
-being shipped as a separate module file) with a #GstPluginInitFullFunc
-which allows user data to be passed to the callback function (useful
-for bindings).
-You must make sure that GStreamer has been initialised (with gst_init() or
-via gst_init_get_option_group()) before calling this function."
-                version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="major_version" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="minor_version" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="description" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="init_full_func"
-                     transfer-ownership="none"
-                     scope="call">
-            <type name="PluginInitFullFunc" c:type="GstPluginInitFullFunc"/>
-          </parameter>
-          <parameter name="version" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="license" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="source" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="package" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="origin" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="load_file"
-                c:identifier="gst_plugin_load_file"
-                doc="Loads the given plugin and refs it.  Caller needs to unref after use.
-newly-loaded GstPlugin, or NULL if an error occurred."
-                throws="1">
-        <return-value transfer-ownership="full">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </return-value>
-        <parameters>
-          <parameter name="filename" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="load_by_name"
-                c:identifier="gst_plugin_load_by_name"
-                doc="Load the named plugin. Refs the plugin.">
-        <return-value transfer-ownership="full">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="list_free"
-                c:identifier="gst_plugin_list_free"
-                doc="Unrefs each member of @list, then frees the list.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="GLib.List" c:type="GList*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="get_name"
-              c:identifier="gst_plugin_get_name"
-              doc="Get the short name of the plugin">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_description"
-              c:identifier="gst_plugin_get_description"
-              doc="Get the long descriptive name of the plugin">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_filename"
-              c:identifier="gst_plugin_get_filename"
-              doc="get the filename of the plugin">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_version"
-              c:identifier="gst_plugin_get_version"
-              doc="get the version of the plugin">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_license"
-              c:identifier="gst_plugin_get_license"
-              doc="get the license of the plugin">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_source"
-              c:identifier="gst_plugin_get_source"
-              doc="get the source module the plugin belongs to.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_package"
-              c:identifier="gst_plugin_get_package"
-              doc="get the package the plugin belongs to.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_origin"
-              c:identifier="gst_plugin_get_origin"
-              doc="get the URL where the plugin comes from">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_cache_data"
-              c:identifier="gst_plugin_get_cache_data"
-              doc="Gets the plugin specific data cache. If it is %NULL there is no cached data
-stored. This is the case when the registry is getting rebuilt."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-      </method>
-      <method name="set_cache_data"
-              c:identifier="gst_plugin_set_cache_data"
-              doc="Adds plugin specific data to cache. Passes the ownership of the structure to
-the @plugin.
-The cache is flushed every time the registry is rebuilt."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="cache_data" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_module"
-              c:identifier="gst_plugin_get_module"
-              doc="Gets the #GModule of the plugin. If the plugin isn&apos;t loaded yet, NULL is
-returned.
-loaded yet.">
-        <return-value transfer-ownership="full">
-          <type name="GModule.Module" c:type="GModule*"/>
-        </return-value>
-      </method>
-      <method name="is_loaded"
-              c:identifier="gst_plugin_is_loaded"
-              doc="queries if the plugin is loaded into memory">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="name_filter"
-              c:identifier="gst_plugin_name_filter"
-              doc="A standard filter that returns TRUE when the plugin is of the
-given name.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="load"
-              c:identifier="gst_plugin_load"
-              doc="Loads @plugin. Note that the *return value* is the loaded plugin; @plugin is
-untouched. The normal use pattern of this function goes like this:
-&lt;programlisting&gt;
-GstPlugin *loaded_plugin;
-loaded_plugin = gst_plugin_load (plugin);
-// presumably, we&apos;re no longer interested in the potentially-unloaded plugin
-gst_object_unref (plugin);
-plugin = loaded_plugin;
-&lt;/programlisting&gt;">
-        <return-value transfer-ownership="full">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </return-value>
-      </method>
-      <method name="add_dependency"
-              c:identifier="gst_plugin_add_dependency"
-              doc="feature set of the plugin (e.g. an environment variable containing
-paths where to look for additional modules/plugins of a library),
-or NULL. Environment variable names may be followed by a path component
-which will be added to the content of the environment variable, e.g.
-&quot;HOME/.mystuff/plugins&quot;.
-may be.
-depending on @flags) to be used in combination with the paths from
-Make GStreamer aware of external dependencies which affect the feature
-set of this plugin (ie. the elements or typefinders associated with it).
-GStreamer will re-inspect plugins with external dependencies whenever any
-of the external dependencies change. This is useful for plugins which wrap
-other plugin systems, e.g. a plugin which wraps a plugin-based visualisation
-library and makes visualisations available as GStreamer elements, or a
-codec loader which exposes elements and/or caps dependent on what external
-codec libraries are currently installed."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="env_vars" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-          <parameter name="paths" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-          <parameter name="names" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="PluginDependencyFlags"
-                  c:type="GstPluginDependencyFlags"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_dependency_simple"
-              c:identifier="gst_plugin_add_dependency_simple"
-              doc="or NULL. Environment variable names may be followed by a path component
-which will be added to the content of the environment variable, e.g.
-&quot;HOME/.mystuff/plugins:MYSTUFF_PLUGINS_PATH&quot;
-or NULL
-Make GStreamer aware of external dependencies which affect the feature
-set of this plugin (ie. the elements or typefinders associated with it).
-GStreamer will re-inspect plugins with external dependencies whenever any
-of the external dependencies change. This is useful for plugins which wrap
-other plugin systems, e.g. a plugin which wraps a plugin-based visualisation
-library and makes visualisations available as GStreamer elements, or a
-codec loader which exposes elements and/or caps dependent on what external
-codec libraries are currently installed.
-Convenience wrapper function for gst_plugin_add_dependency() which
-takes simple strings as arguments instead of string arrays, with multiple
-arguments separated by predefined delimiters (see above)."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="env_vars" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="paths" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="names" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="PluginDependencyFlags"
-                  c:type="GstPluginDependencyFlags"/>
-          </parameter>
-        </parameters>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="desc">
-        <type name="PluginDesc" c:type="GstPluginDesc"/>
-      </field>
-      <field name="orig_desc">
-        <type name="PluginDesc" c:type="GstPluginDesc*"/>
-      </field>
-      <field name="flags">
-        <type name="uint" c:type="unsigned"/>
-      </field>
-      <field name="filename">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="basename">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="module">
-        <type name="GModule.Module" c:type="GModule*"/>
-      </field>
-      <field name="file_size">
-        <type name="size_t" c:type="off_t"/>
-      </field>
-      <field name="file_mtime">
-        <type name="time_t" c:type="time_t"/>
-      </field>
-      <field name="registered">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="priv">
-        <type name="PluginPrivate" c:type="GstPluginPrivate*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="PluginClass"
-            c:type="GstPluginClass"
-            glib:is-gtype-struct-for="Plugin">
-      <field name="object_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <bitfield name="PluginDependencyFlags"
-              doc="argument only if none of the environment variables is set
-filename argument as filter suffix and check all matching files in
-the directory
-Flags used in connection with gst_plugin_add_dependency()."
-              version="0.10.22"
-              c:type="GstPluginDependencyFlags">
-      <member name="none"
-              value="0"
-              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_NONE"/>
-      <member name="recurse"
-              value="1"
-              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_RECURSE"/>
-      <member name="paths_are_default_only"
-              value="2"
-              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY"/>
-      <member name="file_name_is_suffix"
-              value="4"
-              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX"/>
-    </bitfield>
-    <record name="PluginDesc"
-            c:type="GstPluginDesc"
-            doc="A plugin should export a variable of this type called plugin_desc. The plugin
-loader will use the data provided there to initialize the plugin.
-BSD, MIT/X11, Proprietary, unknown.">
-      <field name="major_version" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="minor_version" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="name" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="description" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="plugin_init" writable="1">
-        <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
-      </field>
-      <field name="version" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="license" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="source" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="package" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="origin" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <enumeration name="PluginError"
-                 doc="The plugin loading errors"
-                 c:type="GstPluginError"
-                 glib:error-quark="gst_plugin_error_quark">
-      <member name="module" value="0" c:identifier="GST_PLUGIN_ERROR_MODULE"/>
-      <member name="dependencies"
-              value="1"
-              c:identifier="GST_PLUGIN_ERROR_DEPENDENCIES"/>
-      <member name="name_mismatch"
-              value="2"
-              c:identifier="GST_PLUGIN_ERROR_NAME_MISMATCH"/>
-    </enumeration>
-    <class name="PluginFeature"
-           c:type="GstPluginFeature"
-           doc="Opaque #GstPluginFeature structure."
-           parent="Object"
-           abstract="1"
-           glib:type-name="GstPluginFeature"
-           glib:get-type="gst_plugin_feature_get_type"
-           glib:type-struct="PluginFeatureClass">
-      <function name="list_free"
-                c:identifier="gst_plugin_feature_list_free"
-                doc="Unrefs each member of @list, then frees the list.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="GLib.List" c:type="GList*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="list_copy"
-                c:identifier="gst_plugin_feature_list_copy"
-                doc="Copies the list of features. Caller should call @gst_plugin_feature_list_free
-when done with the list."
-                version="0.10.26">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="GLib.List" c:type="GList*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="load"
-              c:identifier="gst_plugin_feature_load"
-              doc="Loads the plugin containing @feature if it&apos;s not already loaded. @feature is
-unaffected; use the return value instead.
-Normally this function is used like this:
-|[
-GstPluginFeature *loaded_feature;
-loaded_feature = gst_plugin_feature_load (feature);
-// presumably, we&apos;re no longer interested in the potentially-unloaded feature
-gst_object_unref (feature);
-feature = loaded_feature;
-]|">
-        <return-value transfer-ownership="full">
-          <type name="PluginFeature" c:type="GstPluginFeature*"/>
-        </return-value>
-      </method>
-      <method name="type_name_filter"
-              c:identifier="gst_plugin_feature_type_name_filter"
-              doc="Compares type and name of plugin feature. Can be used with gst_filter_run().">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="data" transfer-ownership="none">
-            <type name="TypeNameData" c:type="GstTypeNameData*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_rank"
-              c:identifier="gst_plugin_feature_set_rank"
-              doc="Specifies a rank for a plugin feature, so that autoplugging uses
-the most appropriate feature.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="rank" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_name"
-              c:identifier="gst_plugin_feature_set_name"
-              doc="Sets the name of a plugin feature. The name uniquely identifies a feature
-within all features of the same type. Renaming a plugin feature is not
-allowed. A copy is made of the name so you should free the supplied @name
-after calling this function.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_rank"
-              c:identifier="gst_plugin_feature_get_rank"
-              doc="Gets the rank of a plugin feature.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="get_name"
-              c:identifier="gst_plugin_feature_get_name"
-              doc="Gets the name of a plugin feature.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="check_version"
-              c:identifier="gst_plugin_feature_check_version"
-              doc="Checks whether the given plugin feature is at least
-the required version
-the required version, otherwise #FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="min_major" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="min_minor" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="min_micro" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="loaded">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="name">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="rank">
-        <type name="uint" c:type="guint"/>
-      </field>
-      <field name="plugin_name">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="PluginFeatureClass"
-            c:type="GstPluginFeatureClass"
-            glib:is-gtype-struct-for="PluginFeature">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <callback name="PluginFeatureFilter"
-              c:type="GstPluginFeatureFilter"
-              doc="gst_registry_feature_filter()
-A function that can be used with e.g. gst_registry_feature_filter()
-to get a list of pluginfeature that match certain criteria.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="feature" transfer-ownership="none">
-          <type name="PluginFeature" c:type="GstPluginFeature*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PluginFilter"
-              c:type="GstPluginFilter"
-              doc="A function that can be used with e.g. gst_registry_plugin_filter()
-to get a list of plugins that match certain criteria.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="plugin" transfer-ownership="none">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <bitfield name="PluginFlags"
-              doc="The plugin loading state"
-              c:type="GstPluginFlags">
-      <member name="cached" value="1" c:identifier="GST_PLUGIN_FLAG_CACHED"/>
-      <member name="blacklisted"
-              value="2"
-              c:identifier="GST_PLUGIN_FLAG_BLACKLISTED"/>
-    </bitfield>
-    <callback name="PluginInitFullFunc"
-              c:type="GstPluginInitFullFunc"
-              doc="A plugin should provide a pointer to a function of either #GstPluginInitFunc
-or this type in the plugin_desc struct.
-The function will be called by the loader at startup. One would then
-register each #GstPluginFeature. This version allows
-user data to be passed to init function (useful for bindings)."
-              version="0.10.24">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="plugin" transfer-ownership="none">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="PluginInitFunc"
-              c:type="GstPluginInitFunc"
-              doc="A plugin should provide a pointer to a function of this type in the
-plugin_desc struct.
-This function will be called by the loader at startup. One would then
-register each #GstPluginFeature.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="plugin" transfer-ownership="none">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="PluginPrivate" c:type="GstPluginPrivate">
-    </record>
-    <record name="Poll"
-            c:type="GstPoll"
-            doc="A set of file/network descriptors.">
-      <constructor name="new"
-                   c:identifier="gst_poll_new"
-                   doc="Create a new file descriptor set. If @controllable, it
-is possible to restart or flush a call to gst_poll_wait() with
-gst_poll_restart() and gst_poll_set_flushing() respectively.
-gst_poll_free()."
-                   version="0.10.18">
-        <return-value transfer-ownership="full">
-          <type name="Poll" c:type="GstPoll*"/>
-        </return-value>
-        <parameters>
-          <parameter name="controllable" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_timer"
-                   c:identifier="gst_poll_new_timer"
-                   doc="Create a new poll object that can be used for scheduling cancellable
-timeouts.
-A timeout is performed with gst_poll_wait(). Multiple timeouts can be
-performed from different threads.
-gst_poll_free()."
-                   version="0.10.23">
-        <return-value transfer-ownership="full">
-          <type name="Poll" c:type="GstPoll*"/>
-        </return-value>
-      </constructor>
-      <method name="free"
-              c:identifier="gst_poll_free"
-              doc="Free a file descriptor set."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="add_fd"
-              c:identifier="gst_poll_add_fd"
-              doc="Add a file descriptor to the file descriptor set."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_fd"
-              c:identifier="gst_poll_remove_fd"
-              doc="Remove a file descriptor from the file descriptor set."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_ctl_write"
-              c:identifier="gst_poll_fd_ctl_write"
-              doc="Control whether the descriptor @fd in @set will be monitored for
-writability."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-          <parameter name="active" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_ctl_read"
-              c:identifier="gst_poll_fd_ctl_read"
-              doc="Control whether the descriptor @fd in @set will be monitored for
-readability."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-          <parameter name="active" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_ignored"
-              c:identifier="gst_poll_fd_ignored"
-              doc="Mark @fd as ignored so that the next call to gst_poll_wait() will yield
-the same result for @fd as last time. This function must be called if no
-operation (read/write/recv/send/etc.) will be performed on @fd before
-the next call to gst_poll_wait().
-The reason why this is needed is because the underlying implementation
-might not allow querying the fd more than once between calls to one of
-the re-enabling operations."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_has_closed"
-              c:identifier="gst_poll_fd_has_closed"
-              doc="Check if @fd in @set has closed the connection."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_has_error"
-              c:identifier="gst_poll_fd_has_error"
-              doc="Check if @fd in @set has an error."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_can_read"
-              c:identifier="gst_poll_fd_can_read"
-              doc="Check if @fd in @set has data to be read."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fd_can_write"
-              c:identifier="gst_poll_fd_can_write"
-              doc="Check if @fd in @set can be used for writing."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fd" transfer-ownership="none">
-            <type name="PollFD" c:type="GstPollFD*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="wait"
-              c:identifier="gst_poll_wait"
-              doc="Wait for activity on the file descriptors in @set. This function waits up to
-the specified @timeout.  A timeout of #GST_CLOCK_TIME_NONE waits forever.
-For #GstPoll objects created with gst_poll_new(), this function can only be
-called from a single thread at a time.  If called from multiple threads,
--1 will be returned with errno set to EPERM.
-This is not true for timer #GstPoll objects created with
-gst_poll_new_timer(), where it is allowed to have multiple threads waiting
-simultaneously.
-activity was detected after @timeout. If an error occurs, -1 is returned
-and errno is set."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-        <parameters>
-          <parameter name="timeout" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_controllable"
-              c:identifier="gst_poll_set_controllable"
-              doc="When @controllable is %TRUE, this function ensures that future calls to
-gst_poll_wait() will be affected by gst_poll_restart() and
-gst_poll_set_flushing()."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="controllable" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="restart"
-              c:identifier="gst_poll_restart"
-              doc="Restart any gst_poll_wait() that is in progress. This function is typically
-used after adding or removing descriptors to @set.
-If @set is not controllable, then this call will have no effect."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="set_flushing"
-              c:identifier="gst_poll_set_flushing"
-              doc="When @flushing is %TRUE, this function ensures that current and future calls
-to gst_poll_wait() will return -1, with errno set to EBUSY.
-Unsetting the flushing state will restore normal operation of @set."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="flushing" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="write_control"
-              c:identifier="gst_poll_write_control"
-              doc="Write a byte to the control socket of the controllable @set.
-This function is mostly useful for timer #GstPoll objects created with
-gst_poll_new_timer().
-It will make any current and future gst_poll_wait() function return with
-1, meaning the control socket is set. After an equal amount of calls to
-gst_poll_read_control() have been performed, calls to gst_poll_wait() will
-block again until their timeout expired.
-byte could not be written."
-              version="0.10.23">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="read_control"
-              c:identifier="gst_poll_read_control"
-              doc="Read a byte from the control socket of the controllable @set.
-This function is mostly useful for timer #GstPoll objects created with
-gst_poll_new_timer().
-was no byte to read."
-              version="0.10.23">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="PollFD" c:type="GstPollFD" doc="A file descriptor object.">
-      <field name="fd" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="idx" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <method name="init"
-              c:identifier="gst_poll_fd_init"
-              doc="Initializes @fd. Alternatively you can initialize it with
-#GST_POLL_FD_INIT."
-              version="0.10.18">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-    </record>
-    <interface name="Preset"
-               c:type="GstPreset"
-               doc="Opaque #GstPreset data structure."
-               glib:type-name="GstPreset"
-               glib:get-type="gst_preset_get_type"
-               glib:type-struct="PresetInterface">
-      <virtual-method name="get_preset_names" invoker="get_preset_names">
-        <return-value transfer-ownership="full">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="get_property_names" invoker="get_property_names">
-        <return-value transfer-ownership="full">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="load_preset" invoker="load_preset">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="save_preset" invoker="save_preset">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="rename_preset" invoker="rename_preset">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="old_name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="new_name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="delete_preset" invoker="delete_preset">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="set_meta" invoker="set_meta">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="get_meta" invoker="get_meta">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="get_preset_names"
-              c:identifier="gst_preset_get_preset_names"
-              doc="Get a copy of preset names as a NULL terminated string array."
-              version="0.10.20">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </method>
-      <method name="get_property_names"
-              c:identifier="gst_preset_get_property_names"
-              doc="Get a the names of the GObject properties that can be used for presets."
-              version="0.10.20">
-        <return-value transfer-ownership="full" doc="after use.">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </method>
-      <method name="load_preset"
-              c:identifier="gst_preset_load_preset"
-              doc="Load the given preset."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="save_preset"
-              c:identifier="gst_preset_save_preset"
-              doc="Save the current object settings as a preset under the given name. If there
-is already a preset by this @name it will be overwritten."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="rename_preset"
-              c:identifier="gst_preset_rename_preset"
-              doc="Renames a preset. If there is already a preset by the @new_name it will be
-overwritten."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="old_name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="new_name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="delete_preset"
-              c:identifier="gst_preset_delete_preset"
-              doc="Delete the given preset."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_meta"
-              c:identifier="gst_preset_set_meta"
-              doc="Sets a new @value for an existing meta data item or adds a new item. Meta
-data @tag names can be something like e.g. &quot;comment&quot;. Supplying %NULL for the"
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_meta"
-              c:identifier="gst_preset_get_meta"
-              doc="Gets the @value for an existing meta data @tag. Meta data @tag names can be
-something like e.g. &quot;comment&quot;. Returned values need to be released when done.
-or no value for the given @tag"
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-    </interface>
-    <record name="PresetInterface"
-            c:type="GstPresetInterface"
-            glib:is-gtype-struct-for="Preset"
-            doc="#GstPreset interface.">
-      <field name="parent">
-        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
-      </field>
-      <field name="get_preset_names">
-        <callback name="get_preset_names" c:type="get_preset_names">
-          <return-value transfer-ownership="full">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_property_names">
-        <callback name="get_property_names" c:type="get_property_names">
-          <return-value transfer-ownership="full">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="load_preset">
-        <callback name="load_preset" c:type="load_preset">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-            <parameter name="name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="save_preset">
-        <callback name="save_preset" c:type="save_preset">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-            <parameter name="name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="rename_preset">
-        <callback name="rename_preset" c:type="rename_preset">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-            <parameter name="old_name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-            <parameter name="new_name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="delete_preset">
-        <callback name="delete_preset" c:type="delete_preset">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-            <parameter name="name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="set_meta">
-        <callback name="set_meta" c:type="set_meta">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-            <parameter name="name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-            <parameter name="tag" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-            <parameter name="value" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_meta">
-        <callback name="get_meta" c:type="get_meta">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="preset" transfer-ownership="none">
-              <type name="Preset" c:type="GstPreset*"/>
-            </parameter>
-            <parameter name="name" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-            <parameter name="tag" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-            <parameter name="value" transfer-ownership="none">
-              <array c:type="gchar**">
-                <type name="utf8"/>
-              </array>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <class name="ProxyPad"
-           c:type="GstProxyPad"
-           parent="Pad"
-           glib:type-name="GstProxyPad"
-           glib:get-type="gst_proxy_pad_get_type"
-           glib:type-struct="ProxyPadClass">
-      <field name="pad">
-        <type name="Pad" c:type="GstPad"/>
-      </field>
-      <field name="priv">
-        <type name="ProxyPadPrivate" c:type="GstProxyPadPrivate*"/>
-      </field>
-    </class>
-    <record name="ProxyPadClass"
-            c:type="GstProxyPadClass"
-            glib:is-gtype-struct-for="ProxyPad">
-      <field name="parent_class">
-        <type name="PadClass" c:type="GstPadClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="ProxyPadPrivate" c:type="GstProxyPadPrivate">
-    </record>
-    <record name="Query" c:type="GstQuery" doc="The #GstQuery structure.">
-      <field name="mini_object" writable="1">
-        <type name="MiniObject" c:type="GstMiniObject"/>
-      </field>
-      <field name="type" writable="1">
-        <type name="QueryType" c:type="GstQueryType"/>
-      </field>
-      <field name="structure" writable="1">
-        <type name="Structure" c:type="GstStructure*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <constructor name="new_position"
-                   c:identifier="gst_query_new_position"
-                   doc="Constructs a new query stream position query object. Use gst_query_unref()
-when done with it. A position query is used to query the current position
-of playback in the streams, in some format.">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_duration"
-                   c:identifier="gst_query_new_duration"
-                   doc="Constructs a new stream duration query object to query in the given format.
-Use gst_query_unref() when done with it. A duration query will give the
-total length of the stream.">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_latency"
-                   c:identifier="gst_query_new_latency"
-                   doc="Constructs a new latency query object.
-Use gst_query_unref() when done with it. A latency query is usually performed
-by sinks to compensate for additional latency introduced by elements in the
-pipeline."
-                   version="0.10.12">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_convert"
-                   c:identifier="gst_query_new_convert"
-                   doc="Constructs a new convert query object. Use gst_query_unref()
-when done with it. A convert query is used to ask for a conversion between
-one format and another.">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="src_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="dest_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_segment"
-                   c:identifier="gst_query_new_segment"
-                   doc="Constructs a new segment query object. Use gst_query_unref()
-when done with it. A segment query is used to discover information about the
-currently configured segment for playback.">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_application"
-                   c:identifier="gst_query_new_application"
-                   doc="Constructs a new custom application query object. Use gst_query_unref()
-when done with it.">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="QueryType" c:type="GstQueryType"/>
-          </parameter>
-          <parameter name="structure" transfer-ownership="none">
-            <type name="Structure" c:type="GstStructure*"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_seeking"
-                   c:identifier="gst_query_new_seeking"
-                   doc="Constructs a new query object for querying seeking properties of
-the stream.">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_formats"
-                   c:identifier="gst_query_new_formats"
-                   doc="Constructs a new query object for querying formats of
-the stream."
-                   version="0.10.4">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_buffering" c:identifier="gst_query_new_buffering">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <constructor name="new_uri"
-                   c:identifier="gst_query_new_uri"
-                   doc="Constructs a new query URI query object. Use gst_query_unref()
-when done with it. An URI query is used to query the current URI
-that is used by the source or sink."
-                   version="0.10.22">
-        <return-value transfer-ownership="full">
-          <type name="Query" c:type="GstQuery*"/>
-        </return-value>
-      </constructor>
-      <method name="set_position"
-              c:identifier="gst_query_set_position"
-              doc="Answer a position query by setting the requested value in the given format.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="cur" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_position"
-              c:identifier="gst_query_parse_position"
-              doc="Parse a position query, writing the format into @format, and the position
-into @cur, if the respective parameters are non-NULL.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="cur" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_duration"
-              c:identifier="gst_query_set_duration"
-              doc="Answer a duration query by setting the requested value in the given format.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="duration" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_duration"
-              c:identifier="gst_query_parse_duration"
-              doc="Parse a duration query answer. Write the format of the duration into @format,
-and the value into @duration, if the respective variables are non-NULL.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="duration" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_latency"
-              c:identifier="gst_query_set_latency"
-              doc="Answer a latency query by setting the requested values in the given format."
-              version="0.10.12">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="live" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="min_latency" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-          <parameter name="max_latency" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_latency"
-              c:identifier="gst_query_parse_latency"
-              doc="Parse a latency query answer."
-              version="0.10.12">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="live" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="min_latency" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-          <parameter name="max_latency" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_convert"
-              c:identifier="gst_query_set_convert"
-              doc="Answer a convert query by setting the requested values.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="src_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="src_value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="dest_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="dest_value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_convert"
-              c:identifier="gst_query_parse_convert"
-              doc="Parse a convert query answer. Any of @src_format, @src_value, @dest_format,
-and @dest_value may be NULL, in which case that value is omitted.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="src_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="src_value"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="dest_format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="dest_value"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_segment"
-              c:identifier="gst_query_set_segment"
-              doc="Answer a segment query by setting the requested values. The normal
-playback segment of a pipeline is 0 to duration at the default rate of
-1.0. If a seek was performed on the pipeline to play a different
-segment, this query will return the range specified in the last seek.
-playback range start and stop values expressed in @format.
-The values are always between 0 and the duration of the media and
-negative rates, playback will actually happen from @stop_value to">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start_value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop_value" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_segment"
-              c:identifier="gst_query_parse_segment"
-              doc="Parse a segment query answer. Any of @rate, @format, @start_value, and
-See gst_query_set_segment() for an explanation of the function arguments.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="rate" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="start_value"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="stop_value"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_structure"
-              c:identifier="gst_query_get_structure"
-              doc="Get the structure of a query.
-by the query and will therefore be freed when the query is unreffed.">
-        <return-value transfer-ownership="full">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-      </method>
-      <method name="set_seeking"
-              c:identifier="gst_query_set_seeking"
-              doc="Set the seeking query result fields in @query.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="seekable" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="segment_start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="segment_end" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_seeking"
-              c:identifier="gst_query_parse_seeking"
-              doc="Parse a seeking query, writing the format into @format, and
-other results into the passed parameters, if the respective parameters
-are non-NULL">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="seekable" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="segment_start"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="segment_end"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_formats"
-              c:identifier="gst_query_set_formats"
-              doc="Set the formats query result fields in @query. The number of formats passed
-must be equal to @n_formats.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="n_formats" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_formatsv"
-              c:identifier="gst_query_set_formatsv"
-              doc="Set the formats query result fields in @query. The number of formats passed
-in the @formats array must be equal to @n_formats."
-              version="0.10.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="n_formats" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="formats" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_formats_length"
-              c:identifier="gst_query_parse_formats_length"
-              doc="Parse the number of formats in the formats @query."
-              version="0.10.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="n_formats"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="uint" c:type="guint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_formats_nth"
-              c:identifier="gst_query_parse_formats_nth"
-              doc="Parse the format query and retrieve the @nth format from it into
-set to GST_FORMAT_UNDEFINED."
-              version="0.10.4">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="nth" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_buffering_percent"
-              c:identifier="gst_query_set_buffering_percent">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="busy" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="percent" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_buffering_percent"
-              c:identifier="gst_query_parse_buffering_percent">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="busy" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-          <parameter name="percent" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_buffering_stats"
-              c:identifier="gst_query_set_buffering_stats"
-              doc="Configures the buffering stats values in @query."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="BufferingMode" c:type="GstBufferingMode"/>
-          </parameter>
-          <parameter name="avg_in" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="avg_out" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="buffering_left" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_buffering_stats"
-              c:identifier="gst_query_parse_buffering_stats"
-              doc="Extracts the buffering stats values from @query."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="BufferingMode" c:type="GstBufferingMode*"/>
-          </parameter>
-          <parameter name="avg_in" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="avg_out" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="buffering_left"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_buffering_range"
-              c:identifier="gst_query_set_buffering_range"
-              doc="Set the available query result fields in @query."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="estimated_total" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_buffering_range"
-              c:identifier="gst_query_parse_buffering_range"
-              doc="Parse an available query, writing the format into @format, and
-other results into the passed parameters, if the respective parameters
-are non-NULL"
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat*"/>
-          </parameter>
-          <parameter name="start" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="stop" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="estimated_total"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_uri"
-              c:identifier="gst_query_parse_uri"
-              doc="Parse an URI query, writing the URI into @uri as a newly
-allocated string, if the respective parameters are non-NULL.
-Free the string with g_free() after usage."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="uri" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_uri"
-              c:identifier="gst_query_set_uri"
-              doc="Answer a URI query by setting the requested URI."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="uri" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <record name="QueryClass" c:type="GstQueryClass">
-      <field name="mini_object_class" writable="1">
-        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <enumeration name="QueryType"
-                 doc="0.10.20.
-0.10.22.
-Standard predefined Query types"
-                 c:type="GstQueryType">
-      <member name="none" value="0" c:identifier="GST_QUERY_NONE"/>
-      <member name="position" value="1" c:identifier="GST_QUERY_POSITION"/>
-      <member name="duration" value="2" c:identifier="GST_QUERY_DURATION"/>
-      <member name="latency" value="3" c:identifier="GST_QUERY_LATENCY"/>
-      <member name="jitter" value="4" c:identifier="GST_QUERY_JITTER"/>
-      <member name="rate" value="5" c:identifier="GST_QUERY_RATE"/>
-      <member name="seeking" value="6" c:identifier="GST_QUERY_SEEKING"/>
-      <member name="segment" value="7" c:identifier="GST_QUERY_SEGMENT"/>
-      <member name="convert" value="8" c:identifier="GST_QUERY_CONVERT"/>
-      <member name="formats" value="9" c:identifier="GST_QUERY_FORMATS"/>
-      <member name="buffering" value="10" c:identifier="GST_QUERY_BUFFERING"/>
-      <member name="custom" value="11" c:identifier="GST_QUERY_CUSTOM"/>
-      <member name="uri" value="12" c:identifier="GST_QUERY_URI"/>
-    </enumeration>
-    <record name="QueryTypeDefinition"
-            c:type="GstQueryTypeDefinition"
-            doc="A Query Type definition">
-      <field name="value" writable="1">
-        <type name="QueryType" c:type="GstQueryType"/>
-      </field>
-      <field name="nick" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="description" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="quark" writable="1">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </field>
-    </record>
-    <enumeration name="Rank"
-                 doc="Element priority ranks. Defines the order in which the autoplugger (or
-similar rank-picking mechanisms, such as e.g. gst_element_make_from_uri())
-will choose this element over an alternative one with the same function.
-These constants serve as a rough guidance for defining the rank of a
-#GstPluginFeature. Any value is valid, including values bigger than"
-                 c:type="GstRank">
-      <member name="none" value="0" c:identifier="GST_RANK_NONE"/>
-      <member name="marginal" value="64" c:identifier="GST_RANK_MARGINAL"/>
-      <member name="secondary" value="128" c:identifier="GST_RANK_SECONDARY"/>
-      <member name="primary" value="256" c:identifier="GST_RANK_PRIMARY"/>
-    </enumeration>
-    <class name="Registry"
-           c:type="GstRegistry"
-           doc="Opaque #GstRegistry structure."
-           parent="Object"
-           glib:type-name="GstRegistry"
-           glib:get-type="gst_registry_get_type"
-           glib:type-struct="RegistryClass">
-      <function name="get_default"
-                c:identifier="gst_registry_get_default"
-                doc="Retrieves the default registry. The caller does not own a reference on the
-registry, as it is alive as long as GStreamer is initialized.">
-        <return-value transfer-ownership="full">
-          <type name="Registry" c:type="GstRegistry*"/>
-        </return-value>
-      </function>
-      <function name="fork_is_enabled"
-                c:identifier="gst_registry_fork_is_enabled"
-                doc="By default GStreamer will perform scanning and rebuilding of the
-registry file using a helper child process.
-Applications might want to disable this behaviour with the
-gst_registry_fork_set_enabled() function, in which case new plugins
-are scanned (and loaded) into the application process.
-rebuilding the registry."
-                version="0.10.10">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </function>
-      <function name="fork_set_enabled"
-                c:identifier="gst_registry_fork_set_enabled"
-                doc="Applications might want to disable/enable spawning of a child helper process
-when rebuilding the registry. See gst_registry_fork_is_enabled() for more
-information."
-                version="0.10.10">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="enabled" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="scan_path"
-              c:identifier="gst_registry_scan_path"
-              doc="Scan the given path for plugins to add to the registry. The syntax of the
-path is specific to the registry.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="path" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_path"
-              c:identifier="gst_registry_add_path"
-              doc="Add the given path to the registry. The syntax of the
-path is specific to the registry. If the path has already been
-added, do nothing.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="path" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_path_list"
-              c:identifier="gst_registry_get_path_list"
-              doc="Get the list of paths for the given registry.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <method name="add_plugin"
-              c:identifier="gst_registry_add_plugin"
-              doc="Add the plugin to the registry. The plugin-added signal will be emitted.
-This function will sink @plugin.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="plugin" transfer-ownership="none">
-            <type name="Plugin" c:type="GstPlugin*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_plugin"
-              c:identifier="gst_registry_remove_plugin"
-              doc="Remove the plugin from the registry.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="plugin" transfer-ownership="none">
-            <type name="Plugin" c:type="GstPlugin*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_feature"
-              c:identifier="gst_registry_add_feature"
-              doc="Add the feature to the registry. The feature-added signal will be emitted.
-This function sinks @feature.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="feature" transfer-ownership="none">
-            <type name="PluginFeature" c:type="GstPluginFeature*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_feature"
-              c:identifier="gst_registry_remove_feature"
-              doc="Remove the feature from the registry.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="feature" transfer-ownership="none">
-            <type name="PluginFeature" c:type="GstPluginFeature*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_plugin_list"
-              c:identifier="gst_registry_get_plugin_list"
-              doc="Get a copy of all plugins registered in the given registry. The refcount
-of each element in the list in incremented.
-MT safe.">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <method name="plugin_filter"
-              c:identifier="gst_registry_plugin_filter"
-              doc="Runs a filter against all plugins in the registry and returns a #GList with
-the results. If the first flag is set, only the first match is
-returned (as a list with a single object).
-Every plugin is reffed; use gst_plugin_list_free() after use, which
-will unref again.
-MT safe.">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="filter" transfer-ownership="none" scope="call">
-            <type name="PluginFilter" c:type="GstPluginFilter"/>
-          </parameter>
-          <parameter name="first" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="feature_filter"
-              c:identifier="gst_registry_feature_filter"
-              doc="Runs a filter against all features of the plugins in the registry
-and returns a GList with the results.
-If the first flag is set, only the first match is
-returned (as a list with a single object).
-after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="filter" transfer-ownership="none" scope="call">
-            <type name="PluginFeatureFilter" c:type="GstPluginFeatureFilter"/>
-          </parameter>
-          <parameter name="first" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_feature_list"
-              c:identifier="gst_registry_get_feature_list"
-              doc="Retrieves a #GList of #GstPluginFeature of @type.
-gst_plugin_feature_list_free() after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_feature_list_by_plugin"
-              c:identifier="gst_registry_get_feature_list_by_plugin"
-              doc="Retrieves a #GList of features of the plugin with name @name.
-after usage.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_feature_list_cookie"
-              c:identifier="gst_registry_get_feature_list_cookie"
-              doc="Returns the registrys feature list cookie. This changes
-every time a feature is added or removed from the registry."
-              version="0.10.26">
-        <return-value transfer-ownership="none">
-          <type name="uint32" c:type="guint32"/>
-        </return-value>
-      </method>
-      <method name="find_plugin"
-              c:identifier="gst_registry_find_plugin"
-              doc="Find the plugin with the given name in the registry.
-The plugin will be reffed; caller is responsible for unreffing.
-gst_object_unref() after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="find_feature"
-              c:identifier="gst_registry_find_feature"
-              doc="Find the pluginfeature with the given name and type in the registry.
-if the plugin was not found. gst_object_unref() after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="PluginFeature" c:type="GstPluginFeature*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="lookup"
-              c:identifier="gst_registry_lookup"
-              doc="Look up a plugin in the given registry with the given filename.
-If found, plugin is reffed.
-after usage.">
-        <return-value transfer-ownership="full">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </return-value>
-        <parameters>
-          <parameter name="filename" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="lookup_feature"
-              c:identifier="gst_registry_lookup_feature"
-              doc="Find a #GstPluginFeature with @name in @registry.
-gst_object_unref() after usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="PluginFeature" c:type="GstPluginFeature*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="xml_read_cache" c:identifier="gst_registry_xml_read_cache">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="location" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="xml_write_cache"
-              c:identifier="gst_registry_xml_write_cache">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="location" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="plugins">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="features">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="paths">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="cache_file">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="feature_hash">
-        <type name="GLib.HashTable" c:type="GHashTable*"/>
-      </field>
-      <field name="basename_hash">
-        <type name="GLib.HashTable" c:type="GHashTable*"/>
-      </field>
-      <field name="priv">
-        <type name="RegistryPrivate" c:type="GstRegistryPrivate*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
-          <type name="any"/>
-        </array>
-      </field>
-      <glib:signal name="feature-added"
-                   doc="Signals that a feature has been added to the registry (possibly
-replacing a previously-added one by the same name)">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="feature" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-      <glib:signal name="plugin-added"
-                   doc="Signals that a plugin has been added to the registry (possibly
-replacing a previously-added one by the same name)">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="plugin" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="RegistryClass"
-            c:type="GstRegistryClass"
-            glib:is-gtype-struct-for="Registry">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="plugin_added">
-        <callback name="plugin_added" c:type="plugin_added">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="registry" transfer-ownership="none">
-              <type name="Registry" c:type="GstRegistry*"/>
-            </parameter>
-            <parameter name="plugin" transfer-ownership="none">
-              <type name="Plugin" c:type="GstPlugin*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="feature_added">
-        <callback name="feature_added" c:type="feature_added">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="registry" transfer-ownership="none">
-              <type name="Registry" c:type="GstRegistry*"/>
-            </parameter>
-            <parameter name="feature" transfer-ownership="none">
-              <type name="PluginFeature" c:type="GstPluginFeature*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="RegistryPrivate" c:type="GstRegistryPrivate">
-    </record>
-    <enumeration name="ResourceError"
-                 doc="category.  Make sure you add a custom message to the error call.
-deciding where to go while developing code.
-both reading and writing, or either (but unspecified which).
-Resource errors are for any resource used by an element:
-memory, files, network connections, process space, ...
-They&apos;re typically used by source and sink elements."
-                 c:type="GstResourceError"
-                 glib:error-quark="gst_resource_error_quark">
-      <member name="failed"
-              value="1"
-              c:identifier="GST_RESOURCE_ERROR_FAILED"/>
-      <member name="too_lazy"
-              value="2"
-              c:identifier="GST_RESOURCE_ERROR_TOO_LAZY"/>
-      <member name="not_found"
-              value="3"
-              c:identifier="GST_RESOURCE_ERROR_NOT_FOUND"/>
-      <member name="busy" value="4" c:identifier="GST_RESOURCE_ERROR_BUSY"/>
-      <member name="open_read"
-              value="5"
-              c:identifier="GST_RESOURCE_ERROR_OPEN_READ"/>
-      <member name="open_write"
-              value="6"
-              c:identifier="GST_RESOURCE_ERROR_OPEN_WRITE"/>
-      <member name="open_read_write"
-              value="7"
-              c:identifier="GST_RESOURCE_ERROR_OPEN_READ_WRITE"/>
-      <member name="close" value="8" c:identifier="GST_RESOURCE_ERROR_CLOSE"/>
-      <member name="read" value="9" c:identifier="GST_RESOURCE_ERROR_READ"/>
-      <member name="write" value="10" c:identifier="GST_RESOURCE_ERROR_WRITE"/>
-      <member name="seek" value="11" c:identifier="GST_RESOURCE_ERROR_SEEK"/>
-      <member name="sync" value="12" c:identifier="GST_RESOURCE_ERROR_SYNC"/>
-      <member name="settings"
-              value="13"
-              c:identifier="GST_RESOURCE_ERROR_SETTINGS"/>
-      <member name="no_space_left"
-              value="14"
-              c:identifier="GST_RESOURCE_ERROR_NO_SPACE_LEFT"/>
-      <member name="num_errors"
-              value="15"
-              c:identifier="GST_RESOURCE_ERROR_NUM_ERRORS"/>
-    </enumeration>
-    <constant name="SECOND" value="0">
-      <type name="int"/>
-    </constant>
-    <enumeration name="SearchMode"
-                 doc="The different search modes."
-                 version="0.10.23"
-                 c:type="GstSearchMode">
-      <member name="exact" value="0" c:identifier="GST_SEARCH_MODE_EXACT"/>
-      <member name="before" value="1" c:identifier="GST_SEARCH_MODE_BEFORE"/>
-      <member name="after" value="2" c:identifier="GST_SEARCH_MODE_AFTER"/>
-    </enumeration>
-    <bitfield name="SeekFlags"
-              doc="be considerably slower for some formats.
-faster but less accurate.
-elements to skip frames instead of generating all
-frames. Since 0.10.22.
-Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags
-can be used together.
-A non flushing seek might take some time to perform as the currently
-playing data in the pipeline will not be cleared.
-An accurate seek might be slower for formats that don&apos;t have any indexes
-or timestamp markers in the stream. Specifying this flag might require a
-complete scan of the file in those cases.
-no EOS will be emmited by the element that performed the seek, but a
-#GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element.
-When this message is posted, it is possible to send a new seek event to
-continue playback. With this seek method it is possible to perform seemless
-looping or simple linear editing.
-When doing fast forward (rate &gt; 1.0) or fast reverse (rate &lt; -1.0) trickmode
-playback, the @GST_SEEK_FLAG_SKIP flag can be used to instruct decoders
-and demuxers to adjust the playback rate by skipping frames. This can improve
-performance and decrease CPU usage because not all frames need to be decoded."
-              c:type="GstSeekFlags">
-      <member name="none" value="0" c:identifier="GST_SEEK_FLAG_NONE"/>
-      <member name="flush" value="1" c:identifier="GST_SEEK_FLAG_FLUSH"/>
-      <member name="accurate" value="2" c:identifier="GST_SEEK_FLAG_ACCURATE"/>
-      <member name="key_unit" value="4" c:identifier="GST_SEEK_FLAG_KEY_UNIT"/>
-      <member name="segment" value="8" c:identifier="GST_SEEK_FLAG_SEGMENT"/>
-      <member name="skip" value="16" c:identifier="GST_SEEK_FLAG_SKIP"/>
-    </bitfield>
-    <enumeration name="SeekType"
-                 doc="can&apos;t be used to seek relative to the current playback position - do a
-position query, calculate the desired position and then do an absolute
-position seek instead if that&apos;s what you want to do.
-The different types of seek events. When constructing a seek event with
-gst_event_new_seek(), a format, a seek method and optional flags are to
-be provided. The seek event is then inserted into the graph with
-gst_pad_send_event() or gst_element_send_event()."
-                 c:type="GstSeekType">
-      <member name="none" value="0" c:identifier="GST_SEEK_TYPE_NONE"/>
-      <member name="cur" value="1" c:identifier="GST_SEEK_TYPE_CUR"/>
-      <member name="set" value="2" c:identifier="GST_SEEK_TYPE_SET"/>
-      <member name="end" value="3" c:identifier="GST_SEEK_TYPE_END"/>
-    </enumeration>
-    <record name="Segment"
-            c:type="GstSegment"
-            doc="A helper structure that holds the configured region of
-interest in a media file."
-            glib:type-name="GstSegment"
-            glib:get-type="gst_segment_get_type">
-      <field name="rate" writable="1">
-        <type name="double" c:type="gdouble"/>
-      </field>
-      <field name="abs_rate" writable="1">
-        <type name="double" c:type="gdouble"/>
-      </field>
-      <field name="format" writable="1">
-        <type name="Format" c:type="GstFormat"/>
-      </field>
-      <field name="flags" writable="1">
-        <type name="SeekFlags" c:type="GstSeekFlags"/>
-      </field>
-      <field name="start" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="stop" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="time" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="accum" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="last_stop" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="duration" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="applied_rate" writable="1">
-        <type name="double" c:type="gdouble"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="guint8" fixed-size="0">
-          <type name="uint8"/>
-        </array>
-      </field>
-      <constructor name="new"
-                   c:identifier="gst_segment_new"
-                   doc="Allocate a new #GstSegment structure and initialize it using
-gst_segment_init().">
-        <return-value transfer-ownership="full">
-          <type name="Segment" c:type="GstSegment*"/>
-        </return-value>
-      </constructor>
-      <method name="copy"
-              c:identifier="gst_segment_copy"
-              doc="Create a copy of given @segment."
-              version="0.10.20">
-        <return-value transfer-ownership="full">
-          <type name="Segment" c:type="GstSegment*"/>
-        </return-value>
-      </method>
-      <method name="free"
-              c:identifier="gst_segment_free"
-              doc="Free the allocated segment @segment.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="init"
-              c:identifier="gst_segment_init"
-              doc="The start/last_stop positions are set to 0 and the stop/duration
-fields are set to -1 (unknown). The default rate of 1.0 and no
-flags are set.
-Initialize @segment to its default values.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_duration"
-              c:identifier="gst_segment_set_duration"
-              doc="Set the duration of the segment to @duration. This function is mainly
-used by elements that perform seeking and know the total duration of the
-segment.
-This field should be set to allow seeking requests relative to the
-duration.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="duration" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_last_stop"
-              c:identifier="gst_segment_set_last_stop"
-              doc="Set the last observed stop position in the segment to @position.
-This field should be set to allow seeking requests relative to the
-current playing position.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_seek"
-              c:identifier="gst_segment_set_seek"
-              doc="Update the segment structure with the field values of a seek event (see
-gst_event_new_seek()).
-After calling this method, the segment field last_stop and time will
-contain the requested new position in the segment. The new requested
-position in the segment depends on @rate and @start_type and @stop_type.
-For positive @rate, the new position in the segment is the new @segment
-start field when it was updated with a @start_type different from
-#GST_SEEK_TYPE_NONE. If no update was performed on @segment start position
-(#GST_SEEK_TYPE_NONE), @start is ignored and @segment last_stop is
-unmodified.
-For negative @rate, the new position in the segment is the new @segment
-stop field when it was updated with a @stop_type different from
-#GST_SEEK_TYPE_NONE. If no stop was previously configured in the segment, the
-duration of the segment will be used to update the stop position.
-If no update was performed on @segment stop position (#GST_SEEK_TYPE_NONE),
-The applied rate of the segment will be set to 1.0 by default.
-If the caller can apply a rate change, it should update @segment
-rate and applied_rate after calling this function.
-last_stop field. This field can be FALSE if, for example, only the @rate
-has been changed but not the playback position.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="flags" transfer-ownership="none">
-            <type name="SeekFlags" c:type="GstSeekFlags"/>
-          </parameter>
-          <parameter name="start_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop_type" transfer-ownership="none">
-            <type name="SeekType" c:type="GstSeekType"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="update" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_newsegment"
-              c:identifier="gst_segment_set_newsegment"
-              doc="Update the segment structure with the field values of a new segment event and
-with a default applied_rate of 1.0."
-              version="0.10.6">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="update" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="time" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_newsegment_full"
-              c:identifier="gst_segment_set_newsegment_full"
-              doc="Update the segment structure with the field values of a new segment event.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="update" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-          <parameter name="rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="applied_rate" transfer-ownership="none">
-            <type name="double" c:type="gdouble"/>
-          </parameter>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="time" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_stream_time"
-              c:identifier="gst_segment_to_stream_time"
-              doc="Translate @position to stream time using the currently configured
-segment. The @position value must be between @segment start and
-stop value.
-This function is typically used by elements that need to operate on
-the stream time of the buffers it receives, such as effect plugins.
-In those use cases, @position is typically the buffer timestamp or
-clock time that one wants to convert to the stream time.
-The stream time is always between 0 and the total duration of the
-media stream.
-was given.">
-        <return-value transfer-ownership="none">
-          <type name="int64" c:type="gint64"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_running_time"
-              c:identifier="gst_segment_to_running_time"
-              doc="Translate @position to the total running time using the currently configured
-and previously accumulated segments. Position is a value between @segment
-start and stop time.
-This function is typically used by elements that need to synchronize to the
-global clock in a pipeline. The runnning time is a constantly increasing value
-starting from 0. When gst_segment_init() is called, this value will reset to
-0.
-This function returns -1 if the position is outside of @segment start and stop.
-was given.">
-        <return-value transfer-ownership="none">
-          <type name="int64" c:type="gint64"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="position" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_position"
-              c:identifier="gst_segment_to_position"
-              doc="Convert @running_time into a position in the segment so that
-gst_segment_to_running_time() with that position returns @running_time.
--1 when @running_time is -1 or when it is not inside @segment."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="int64" c:type="gint64"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="running_time" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="clip"
-              c:identifier="gst_segment_clip"
-              doc="Clip the given @start and @stop values to the segment boundaries given
-in @segment. @start and @stop are compared and clipped to @segment
-start and stop values.
-If the function returns FALSE, @start and @stop are known to fall
-outside of @segment and @clip_start and @clip_stop are not updated.
-When the function returns TRUE, @clip_start and @clip_stop will be
-updated. If @clip_start or @clip_stop are different from @start or @stop
-respectively, the region fell partially in the segment.
-Note that when @stop is -1, @clip_stop will be set to the end of the
-segment. Depending on the use case, this may or may not be what you want.
-completely in @segment, FALSE if the values are completely outside
-of the segment.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="start" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="stop" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="clip_start"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-          <parameter name="clip_stop"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_running_time"
-              c:identifier="gst_segment_set_running_time"
-              doc="Adjust the start/stop and accum values of @segment such that the next valid
-buffer will be one with @running_time.
-returned, @running_time is -1 or not in @segment."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="format" transfer-ownership="none">
-            <type name="Format" c:type="GstFormat"/>
-          </parameter>
-          <parameter name="running_time" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <enumeration name="State"
-                 doc="process data. Sink elements however only accept one
-buffer and then block.
-the data is flowing.
-The possible states an element can be in. States can be changed using
-gst_element_set_state() and checked using gst_element_get_state()."
-                 c:type="GstState">
-      <member name="void_pending"
-              value="0"
-              c:identifier="GST_STATE_VOID_PENDING"/>
-      <member name="null" value="1" c:identifier="GST_STATE_NULL"/>
-      <member name="ready" value="2" c:identifier="GST_STATE_READY"/>
-      <member name="paused" value="3" c:identifier="GST_STATE_PAUSED"/>
-      <member name="playing" value="4" c:identifier="GST_STATE_PLAYING"/>
-    </enumeration>
-    <bitfield name="StateChange"
-              doc="&lt;itemizedlist&gt;
-&lt;listitem&gt;&lt;para&gt;
-The element must check if the resources it needs are available. Device
-sinks and -sources typically try to probe the device to constrain their
-caps.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-The element opens the device (in case feature need to be probed).
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;/itemizedlist&gt;
-&lt;itemizedlist&gt;
-&lt;listitem&gt;&lt;para&gt;
-The element pads are activated in order to receive data in PAUSED.
-Streaming threads are started.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Some elements might need to return ASYNC and complete the state change
-when they have enough information. It is a requirement for sinks to
-return ASYNC and complete the state change when they receive the first
-buffer or EOS event (preroll). Sinks also block the dataflow when in
-PAUSED.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-A pipeline resets the running_time to 0.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Live sources return NO_PREROLL and don&apos;t generate data.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;/itemizedlist&gt;
-&lt;itemizedlist&gt;
-&lt;listitem&gt;&lt;para&gt;
-Most elements ignore this state change.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-The pipeline selects a clock and distributes this to all the children
-before setting them to PLAYING. This means that it is only alowed to
-synchronize on the clock in the PLAYING state.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-The pipeline uses the clock and the running_time to calculate the
-base_time. The base_time is distributed to all children when performing
-the state change.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Sink elements stop blocking on the preroll buffer or event and start
-rendering the data.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Sinks can post the EOS message in the PLAYING state. It is not allowed to
-post EOS when not in the PLAYING state.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-While streaming in PAUSED or PLAYING elements can create and remove
-sometimes pads.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Live sources start generating data and return SUCCESS.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;/itemizedlist&gt;
-&lt;itemizedlist&gt;
-&lt;listitem&gt;&lt;para&gt;
-Most elements ignore this state change.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-The pipeline calculates the running_time based on the last selected clock
-and the base_time. It stores this information to continue playback when
-going back to the PLAYING state.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Sinks unblock any clock wait calls.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-When a sink does not have a pending buffer to play, it returns ASYNC from
-this state change and completes the state change when it receives a new
-buffer or an EOS event.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Any queued EOS messages are removed since they will be reposted when going
-back to the PLAYING state. The EOS messages are queued in GstBins.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Live sources stop generating data and return NO_PREROLL.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;/itemizedlist&gt;
-&lt;itemizedlist&gt;
-&lt;listitem&gt;&lt;para&gt;
-Sinks unblock any waits in the preroll.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Elements unblock any waits on devices
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Chain or get_range functions return WRONG_STATE.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-The element pads are deactivated so that streaming becomes impossible and
-all streaming threads are stopped.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-The sink forgets all negotiated formats
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Elements remove all sometimes pads
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;/itemizedlist&gt;
-&lt;itemizedlist&gt;
-&lt;listitem&gt;&lt;para&gt;
-Elements close devices
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;listitem&gt;&lt;para&gt;
-Elements reset any internal state.
-&lt;/para&gt;&lt;/listitem&gt;
-&lt;/itemizedlist&gt;
-These are the different state changes an element goes through.
-%GST_STATE_NULL &amp;rArr; %GST_STATE_PLAYING is called an upwards state change
-and %GST_STATE_PLAYING &amp;rArr; %GST_STATE_NULL a downwards state change."
-              c:type="GstStateChange">
-      <member name="null_to_ready"
-              value="10"
-              c:identifier="GST_STATE_CHANGE_NULL_TO_READY"/>
-      <member name="ready_to_paused"
-              value="19"
-              c:identifier="GST_STATE_CHANGE_READY_TO_PAUSED"/>
-      <member name="paused_to_playing"
-              value="28"
-              c:identifier="GST_STATE_CHANGE_PAUSED_TO_PLAYING"/>
-      <member name="playing_to_paused"
-              value="35"
-              c:identifier="GST_STATE_CHANGE_PLAYING_TO_PAUSED"/>
-      <member name="paused_to_ready"
-              value="26"
-              c:identifier="GST_STATE_CHANGE_PAUSED_TO_READY"/>
-      <member name="ready_to_null"
-              value="17"
-              c:identifier="GST_STATE_CHANGE_READY_TO_NULL"/>
-    </bitfield>
-    <enumeration name="StateChangeReturn"
-                 doc="cannot produce data in %GST_STATE_PAUSED.
-This typically happens with live sources.
-The possible return values from a state change function. Only"
-                 c:type="GstStateChangeReturn">
-      <member name="failure"
-              value="0"
-              c:identifier="GST_STATE_CHANGE_FAILURE"/>
-      <member name="success"
-              value="1"
-              c:identifier="GST_STATE_CHANGE_SUCCESS"/>
-      <member name="async" value="2" c:identifier="GST_STATE_CHANGE_ASYNC"/>
-      <member name="no_preroll"
-              value="3"
-              c:identifier="GST_STATE_CHANGE_NO_PREROLL"/>
-    </enumeration>
-    <record name="StaticCaps"
-            c:type="GstStaticCaps"
-            doc="Datastructure to initialize #GstCaps from a string description usually
-used in conjunction with GST_STATIC_CAPS() and gst_static_caps_get() to
-instantiate a #GstCaps.">
-      <field name="caps" writable="1">
-        <type name="Caps" c:type="GstCaps"/>
-      </field>
-      <field name="string" writable="1">
-        <type name="utf8" c:type="char*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <method name="get"
-              c:identifier="gst_static_caps_get"
-              doc="Converts a #GstStaticCaps to a #GstCaps.
-core holds an additional ref to the returned caps,
-use gst_caps_make_writable() on the returned caps to modify it.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="StaticPadTemplate" c:type="GstStaticPadTemplate">
-      <field name="name_template" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="direction" writable="1">
-        <type name="PadDirection" c:type="GstPadDirection"/>
-      </field>
-      <field name="presence" writable="1">
-        <type name="PadPresence" c:type="GstPadPresence"/>
-      </field>
-      <field name="static_caps" writable="1">
-        <type name="StaticCaps" c:type="GstStaticCaps"/>
-      </field>
-      <method name="get"
-              c:identifier="gst_static_pad_template_get"
-              doc="Converts a #GstStaticPadTemplate into a #GstPadTemplate.">
-        <return-value transfer-ownership="full">
-          <type name="PadTemplate" c:type="GstPadTemplate*"/>
-        </return-value>
-      </method>
-      <method name="get_caps"
-              c:identifier="gst_static_pad_template_get_caps"
-              doc="Gets the capabilities of the static pad template.
-Unref after usage. Since the core holds an additional
-ref to the returned caps, use gst_caps_make_writable()
-on the returned caps to modify it.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-    </record>
-    <enumeration name="StreamError"
-                 doc="category.  Make sure you add a custom message to the error call.
-deciding where to go while developing code.
-this functionality yet.
-stream&apos;s type.
-of stream.
-stream&apos;s type.
-(for example, wrong caps).
-Stream errors are for anything related to the stream being processed:
-format errors, media type errors, ...
-They&apos;re typically used by decoders, demuxers, converters, ..."
-                 c:type="GstStreamError"
-                 glib:error-quark="gst_stream_error_quark">
-      <member name="failed" value="1" c:identifier="GST_STREAM_ERROR_FAILED"/>
-      <member name="too_lazy"
-              value="2"
-              c:identifier="GST_STREAM_ERROR_TOO_LAZY"/>
-      <member name="not_implemented"
-              value="3"
-              c:identifier="GST_STREAM_ERROR_NOT_IMPLEMENTED"/>
-      <member name="type_not_found"
-              value="4"
-              c:identifier="GST_STREAM_ERROR_TYPE_NOT_FOUND"/>
-      <member name="wrong_type"
-              value="5"
-              c:identifier="GST_STREAM_ERROR_WRONG_TYPE"/>
-      <member name="codec_not_found"
-              value="6"
-              c:identifier="GST_STREAM_ERROR_CODEC_NOT_FOUND"/>
-      <member name="decode" value="7" c:identifier="GST_STREAM_ERROR_DECODE"/>
-      <member name="encode" value="8" c:identifier="GST_STREAM_ERROR_ENCODE"/>
-      <member name="demux" value="9" c:identifier="GST_STREAM_ERROR_DEMUX"/>
-      <member name="mux" value="10" c:identifier="GST_STREAM_ERROR_MUX"/>
-      <member name="format" value="11" c:identifier="GST_STREAM_ERROR_FORMAT"/>
-      <member name="decrypt"
-              value="12"
-              c:identifier="GST_STREAM_ERROR_DECRYPT"/>
-      <member name="decrypt_nokey"
-              value="13"
-              c:identifier="GST_STREAM_ERROR_DECRYPT_NOKEY"/>
-      <member name="num_errors"
-              value="14"
-              c:identifier="GST_STREAM_ERROR_NUM_ERRORS"/>
-    </enumeration>
-    <enumeration name="StreamStatusType"
-                 doc="The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the
-application of new streaming threads and their status."
-                 version="0.10.24"
-                 c:type="GstStreamStatusType">
-      <member name="create"
-              value="0"
-              c:identifier="GST_STREAM_STATUS_TYPE_CREATE"/>
-      <member name="enter"
-              value="1"
-              c:identifier="GST_STREAM_STATUS_TYPE_ENTER"/>
-      <member name="leave"
-              value="2"
-              c:identifier="GST_STREAM_STATUS_TYPE_LEAVE"/>
-      <member name="destroy"
-              value="3"
-              c:identifier="GST_STREAM_STATUS_TYPE_DESTROY"/>
-      <member name="start"
-              value="8"
-              c:identifier="GST_STREAM_STATUS_TYPE_START"/>
-      <member name="pause"
-              value="9"
-              c:identifier="GST_STREAM_STATUS_TYPE_PAUSE"/>
-      <member name="stop"
-              value="10"
-              c:identifier="GST_STREAM_STATUS_TYPE_STOP"/>
-    </enumeration>
-    <record name="Structure"
-            c:type="GstStructure"
-            doc="The GstStructure object. Most fields are private."
-            glib:type-name="GstStructure"
-            glib:get-type="gst_structure_get_type">
-      <field name="type" writable="1">
-        <type name="GType" c:type="GType"/>
-      </field>
-      <field name="name" writable="1">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </field>
-      <field name="parent_refcount" writable="1">
-        <type name="any" c:type="gint*"/>
-      </field>
-      <field name="fields" writable="1">
-        <type name="GLib.Array" c:type="GArray*"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="gst_structure_new"
-                   doc="Creates a new #GstStructure with the given name.  Parses the
-list of variable arguments and sets fields to the values listed.
-Variable arguments should be passed as field name, field type,
-and value.  Last variable argument should be NULL.">
-        <return-value transfer-ownership="full">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="firstfield" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="copy"
-              c:identifier="gst_structure_copy"
-              doc="Duplicates a #GstStructure and all its fields and values.">
-        <return-value transfer-ownership="full">
-          <type name="Structure" c:type="GstStructure*"/>
-        </return-value>
-      </method>
-      <method name="set_parent_refcount"
-              c:identifier="gst_structure_set_parent_refcount"
-              doc="Sets the parent_refcount field of #GstStructure. This field is used to
-determine whether a structure is mutable or not. This function should only be
-called by code implementing parent objects of #GstStructure, as described in
-the MT Refcounting section of the design documents.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="refcount" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="free"
-              c:identifier="gst_structure_free"
-              doc="Frees a #GstStructure and all its fields and values. The structure must not
-have a parent when this function is called.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_name"
-              c:identifier="gst_structure_get_name"
-              doc="Get the name of @structure as a string.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="get_name_id"
-              c:identifier="gst_structure_get_name_id"
-              doc="Get the name of @structure as a GQuark.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </return-value>
-      </method>
-      <method name="has_name"
-              c:identifier="gst_structure_has_name"
-              doc="Checks if the structure has the given name">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_name"
-              c:identifier="gst_structure_set_name"
-              doc="Sets the name of the structure to the given @name.  The string
-provided is copied before being used. It must not be empty, start with a
-letter and can be followed by letters, numbers and any of &quot;/-_.:&quot;.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="id_set_value"
-              c:identifier="gst_structure_id_set_value"
-              doc="Sets the field with the given GQuark @field to @value.  If the field
-does not exist, it is created.  If the field exists, the previous
-value is replaced and freed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="field" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_value"
-              c:identifier="gst_structure_set_value"
-              doc="Sets the field with the given name @field to @value.  If the field
-does not exist, it is created.  If the field exists, the previous
-value is replaced and freed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set"
-              c:identifier="gst_structure_set"
-              doc="Parses the variable arguments and sets fields accordingly.
-Variable arguments should be in the form field name, field type
-(as a GType), value(s).  The last variable argument should be NULL.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="id_set"
-              c:identifier="gst_structure_id_set"
-              doc="Identical to gst_structure_set, except that field names are
-passed using the GQuark for the field name. This allows more efficient
-setting of the structure if the caller already knows the associated
-quark values.
-The last variable argument must be NULL."
-              version="0.10.10">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get"
-              c:identifier="gst_structure_get"
-              doc="Parses the variable arguments and reads fields from @structure accordingly.
-Variable arguments should be in the form field name, field type
-(as a GType), pointer(s) to a variable(s) to hold the return value(s).
-The last variable argument should be NULL.
-For refcounted (mini)objects you will acquire your own reference which
-you must release with a suitable _unref() when no longer needed. For
-strings and boxed types you will acquire a copy which you will need to
-release with either g_free() or the suiteable function for the boxed type.
-because the field requested did not exist, or was of a type other
-than the type specified), otherwise TRUE."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="first_fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="id_get"
-              c:identifier="gst_structure_id_get"
-              doc="Parses the variable arguments and reads fields from @structure accordingly.
-Variable arguments should be in the form field id quark, field type
-(as a GType), pointer(s) to a variable(s) to hold the return value(s).
-The last variable argument should be NULL (technically it should be a
-0 quark, but we require NULL so compilers that support it can check for
-the NULL terminator and warn if it&apos;s not there).
-This function is just like gst_structure_get() only that it is slightly
-more efficient since it saves the string-to-quark lookup in the global
-quark hashtable.
-For refcounted (mini)objects you will acquire your own reference which
-you must release with a suitable _unref() when no longer needed. For
-strings and boxed types you will acquire a copy which you will need to
-release with either g_free() or the suiteable function for the boxed type.
-because the field requested did not exist, or was of a type other
-than the type specified), otherwise TRUE."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="first_field_id" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="id_get_value"
-              c:identifier="gst_structure_id_get_value"
-              doc="Get the value of the field with GQuark @field.
-identifier.">
-        <return-value transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </return-value>
-        <parameters>
-          <parameter name="field" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_value"
-              c:identifier="gst_structure_get_value"
-              doc="Get the value of the field with name @fieldname.">
-        <return-value transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_field"
-              c:identifier="gst_structure_remove_field"
-              doc="Removes the field with the given name.  If the field with the given
-name does not exist, the structure is unchanged.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_fields"
-              c:identifier="gst_structure_remove_fields"
-              doc="Removes the fields with the given names. If a field does not exist, the
-argument is ignored.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_all_fields"
-              c:identifier="gst_structure_remove_all_fields"
-              doc="Removes all fields in a GstStructure.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_field_type"
-              c:identifier="gst_structure_get_field_type"
-              doc="Finds the field with the given name, and returns the type of the
-value it contains.  If the field is not found, G_TYPE_INVALID is
-returned.">
-        <return-value transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="foreach"
-              c:identifier="gst_structure_foreach"
-              doc="Calls the provided function once for each field in the #GstStructure. The
-function must not modify the fields. Also see gst_structure_map_in_place().
-FALSE otherwise.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="StructureForeachFunc"
-                  c:type="GstStructureForeachFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="map_in_place"
-              c:identifier="gst_structure_map_in_place"
-              doc="Calls the provided function once for each field in the #GstStructure. In
-contrast to gst_structure_foreach(), the function may modify but not delete the
-fields. The structure must be mutable.
-FALSE otherwise.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="StructureMapFunc" c:type="GstStructureMapFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="n_fields"
-              c:identifier="gst_structure_n_fields"
-              doc="Get the number of fields in the structure.">
-        <return-value transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </return-value>
-      </method>
-      <method name="nth_field_name"
-              c:identifier="gst_structure_nth_field_name"
-              doc="Get the name of the given field number, counting from 0 onwards.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-        <parameters>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="id_has_field"
-              c:identifier="gst_structure_id_has_field"
-              doc="Check if @structure contains a field named @field."
-              version="0.10.26">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="field" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="id_has_field_typed"
-              c:identifier="gst_structure_id_has_field_typed"
-              doc="Check if @structure contains a field named @field and with GType @type."
-              version="0.10.26">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="field" transfer-ownership="none">
-            <type name="GLib.Quark" c:type="GQuark"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="has_field"
-              c:identifier="gst_structure_has_field"
-              doc="Check if @structure contains a field named @fieldname.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="has_field_typed"
-              c:identifier="gst_structure_has_field_typed"
-              doc="Check if @structure contains a field named @fieldname and with GType @type.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="type" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_boolean"
-              c:identifier="gst_structure_get_boolean"
-              doc="Sets the boolean pointed to by @value corresponding to the value of the
-given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-with @fieldname or the existing field did not contain a boolean, this
-function returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_int"
-              c:identifier="gst_structure_get_int"
-              doc="Sets the int pointed to by @value corresponding to the value of the
-given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-with @fieldname or the existing field did not contain an int, this function
-returns %FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uint"
-              c:identifier="gst_structure_get_uint"
-              doc="Sets the uint pointed to by @value corresponding to the value of the
-given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-with @fieldname or the existing field did not contain a uint, this function
-returns %FALSE."
-              version="0.10.15">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="uint" c:type="guint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_fourcc"
-              c:identifier="gst_structure_get_fourcc"
-              doc="Sets the Fourcc pointed to by @value corresponding to the value of the
-given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-with @fieldname or the existing field did not contain a fourcc, this function
-returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="uint32" c:type="guint32*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_double"
-              c:identifier="gst_structure_get_double"
-              doc="Sets the double pointed to by @value corresponding to the value of the
-given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-with @fieldname or the existing field did not contain a double, this
-function returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_date"
-              c:identifier="gst_structure_get_date"
-              doc="Sets the date pointed to by @value corresponding to the date of the
-given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-On success @value will point to a newly-allocated copy of the date which
-inconsistent with e.g. gst_structure_get_string() which doesn&apos;t return a
-copy of the string).
-with @fieldname or the existing field did not contain a data, this function
-returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GLib.Date" c:type="GDate**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_clock_time"
-              c:identifier="gst_structure_get_clock_time"
-              doc="Sets the clock time pointed to by @value corresponding to the clock time
-of the given field.  Caller is responsible for making sure the field exists
-and has the correct type.
-with @fieldname or the existing field did not contain a #GstClockTime, this
-function returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="ClockTime" c:type="GstClockTime*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_string"
-              c:identifier="gst_structure_get_string"
-              doc="Finds the field corresponding to @fieldname, and returns the string
-contained in the field&apos;s value.  Caller is responsible for making
-sure the field exists and has the correct type.
-The string should not be modified, and remains valid until the next
-call to a gst_structure_*() function with the given structure.
-or did not contain a string.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_enum"
-              c:identifier="gst_structure_get_enum"
-              doc="Sets the int pointed to by @value corresponding to the value of the
-given field.  Caller is responsible for making sure the field exists,
-has the correct type and that the enumtype is correct.
-with @fieldname or the existing field did not contain an enum of the given
-type, this function returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="enumtype" transfer-ownership="none">
-            <type name="GType" c:type="GType"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_fraction"
-              c:identifier="gst_structure_get_fraction"
-              doc="Sets the integers pointed to by @value_numerator and @value_denominator
-corresponding to the value of the given field.  Caller is responsible
-for making sure the field exists and has the correct type.
-with @fieldname or the existing field did not contain a GstFraction, this
-function returns FALSE.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value_numerator"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-          <parameter name="value_denominator"
-                     direction="out"
-                     transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="to_string"
-              c:identifier="gst_structure_to_string"
-              doc="Converts @structure to a human-readable string representation.
-For debugging purposes its easier to do something like this:
-|[
-GST_LOG (&quot;structure is %&quot; GST_PTR_FORMAT, structure);
-]|
-This prints the structure in human readble form.
-usage.">
-        <return-value transfer-ownership="full" doc="after">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="fixate_field_nearest_int"
-              c:identifier="gst_structure_fixate_field_nearest_int"
-              doc="Fixates a #GstStructure by changing the given field to the nearest
-integer to @target that is a subset of the existing field.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="field_name" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="target" transfer-ownership="none">
-            <type name="int" c:type="int"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fixate_field_nearest_double"
-              c:identifier="gst_structure_fixate_field_nearest_double"
-              doc="Fixates a #GstStructure by changing the given field to the nearest
-double to @target that is a subset of the existing field.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="field_name" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="target" transfer-ownership="none">
-            <type name="double" c:type="double"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fixate_field_boolean"
-              c:identifier="gst_structure_fixate_field_boolean"
-              doc="Fixates a #GstStructure by changing the given @field_name field to the given">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="field_name" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="target" transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="fixate_field_nearest_fraction"
-              c:identifier="gst_structure_fixate_field_nearest_fraction"
-              doc="Fixates a #GstStructure by changing the given field to the nearest
-fraction to @target_numerator/@target_denominator that is a subset
-of the existing field.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="field_name" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="target_numerator" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-          <parameter name="target_denominator" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <enumeration name="StructureChangeType"
-                 doc="The type of a %GST_MESSAGE_STRUCTURE_CHANGE."
-                 version="0.10.22"
-                 c:type="GstStructureChangeType">
-      <member name="link"
-              value="0"
-              c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_LINK"/>
-      <member name="unlink"
-              value="1"
-              c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK"/>
-    </enumeration>
-    <callback name="StructureForeachFunc"
-              c:type="GstStructureForeachFunc"
-              doc="A function that will be called in gst_structure_foreach(). The function may
-not modify @value.
-the foreach operation should stop with FALSE.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="field_id" transfer-ownership="none">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </parameter>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="StructureMapFunc"
-              c:type="GstStructureMapFunc"
-              doc="A function that will be called in gst_structure_map_in_place(). The function
-may modify @value.
-the map operation should stop with FALSE.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="field_id" transfer-ownership="none">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </parameter>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <class name="SystemClock"
-           c:type="GstSystemClock"
-           doc="The default implementation of a #GstClock that uses the system time."
-           parent="Clock"
-           glib:type-name="GstSystemClock"
-           glib:get-type="gst_system_clock_get_type"
-           glib:type-struct="SystemClockClass">
-      <function name="obtain"
-                c:identifier="gst_system_clock_obtain"
-                doc="Get a handle to the default system clock. The refcount of the
-clock will be increased so you need to unref the clock after
-usage.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Clock" c:type="GstClock*"/>
-        </return-value>
-      </function>
-      <property name="clock-type" writable="1">
-        <type name="ClockType" c:type="GstClockType"/>
-      </property>
-      <field name="clock">
-        <type name="Clock" c:type="GstClock"/>
-      </field>
-      <field name="thread">
-        <type name="GLib.Thread" c:type="GThread*"/>
-      </field>
-      <field name="stopping">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <field name="priv">
-        <type name="SystemClockPrivate" c:type="GstSystemClockPrivate*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="SystemClockClass"
-            c:type="GstSystemClockClass"
-            glib:is-gtype-struct-for="SystemClock">
-      <field name="parent_class">
-        <type name="ClockClass" c:type="GstClockClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="SystemClockPrivate" c:type="GstSystemClockPrivate">
-    </record>
-    <constant name="TAG_ALBUM" value="album">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_ARTIST" value="album-artist">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_ARTIST_SORTNAME" value="album-artist-sortname">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_GAIN" value="replaygain-album-gain">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_PEAK" value="replaygain-album-peak">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_SORTNAME" value="album-sortname">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_VOLUME_COUNT" value="album-disc-count">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ALBUM_VOLUME_NUMBER" value="album-disc-number">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ARTIST" value="artist">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ARTIST_SORTNAME" value="musicbrainz-sortname">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ATTACHMENT" value="attachment">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_AUDIO_CODEC" value="audio-codec">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_BEATS_PER_MINUTE" value="beats-per-minute">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_BITRATE" value="bitrate">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_CODEC" value="codec">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_COMMENT" value="comment">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_COMPOSER" value="composer">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_COMPOSER_SORTNAME" value="composer-sortname">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_CONTACT" value="contact">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_CONTAINER_FORMAT" value="container-format">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_COPYRIGHT" value="copyright">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_COPYRIGHT_URI" value="copyright-uri">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_DATE" value="date">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_DESCRIPTION" value="description">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_DURATION" value="duration">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ENCODER" value="encoder">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ENCODER_VERSION" value="encoder-version">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_EXTENDED_COMMENT" value="extended-comment">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GENRE" value="genre">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_CITY" value="geo-location-city">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_COUNTRY" value="geo-location-country">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_ELEVATION" value="geo-location-elevation">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_LATITUDE" value="geo-location-latitude">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_LONGITUDE" value="geo-location-longitude">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_NAME" value="geo-location-name">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GEO_LOCATION_SUBLOCATION"
-              value="geo-location-sublocation">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_GROUPING" value="grouping">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_HOMEPAGE" value="homepage">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_IMAGE" value="image">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ISRC" value="isrc">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_KEYWORDS" value="keywords">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_LANGUAGE_CODE" value="language-code">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_LICENSE" value="license">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_LICENSE_URI" value="license-uri">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_LOCATION" value="location">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_LYRICS" value="lyrics">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_MAXIMUM_BITRATE" value="maximum-bitrate">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_MINIMUM_BITRATE" value="minimum-bitrate">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_NOMINAL_BITRATE" value="nominal-bitrate">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_ORGANIZATION" value="organization">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_PERFORMER" value="performer">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_PREVIEW_IMAGE" value="preview-image">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_REFERENCE_LEVEL" value="replaygain-reference-level">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_SERIAL" value="serial">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_SHOW_EPISODE_NUMBER" value="show-episode-number">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_SHOW_NAME" value="show-name">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_SHOW_SEASON_NUMBER" value="show-season-number">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_SHOW_SORTNAME" value="show-sortname">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_SUBTITLE_CODEC" value="subtitle-codec">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_TITLE" value="title">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_TITLE_SORTNAME" value="title-sortname">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_TRACK_COUNT" value="track-count">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_TRACK_GAIN" value="replaygain-track-gain">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_TRACK_NUMBER" value="track-number">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_TRACK_PEAK" value="replaygain-track-peak">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_USER_RATING" value="user-rating">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_VERSION" value="version">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TAG_VIDEO_CODEC" value="video-codec">
-      <type name="utf8"/>
-    </constant>
-    <constant name="TIME_FORMAT" value="u:%02u:%02u.%09u">
-      <type name="utf8"/>
-    </constant>
-    <enumeration name="TagFlag"
-                 doc="Extra tag flags used when registering tags."
-                 c:type="GstTagFlag">
-      <member name="undefined"
-              value="0"
-              c:identifier="GST_TAG_FLAG_UNDEFINED"/>
-      <member name="meta" value="1" c:identifier="GST_TAG_FLAG_META"/>
-      <member name="encoded" value="2" c:identifier="GST_TAG_FLAG_ENCODED"/>
-      <member name="decoded" value="3" c:identifier="GST_TAG_FLAG_DECODED"/>
-      <member name="count" value="4" c:identifier="GST_TAG_FLAG_COUNT"/>
-    </enumeration>
-    <callback name="TagForeachFunc"
-              c:type="GstTagForeachFunc"
-              doc="A function that will be called in gst_tag_list_foreach(). The function may
-not modify the tag list.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="list" transfer-ownership="none">
-          <type name="TagList" c:type="GstTagList*"/>
-        </parameter>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="TagList"
-            c:type="GstTagList"
-            doc="Opaque #GstTagList data structure."
-            glib:type-name="GstTagList"
-            glib:get-type="gst_tag_list_get_type">
-      <constructor name="new"
-                   c:identifier="gst_tag_list_new"
-                   doc="Creates a new empty GstTagList.">
-        <return-value transfer-ownership="full">
-          <type name="TagList" c:type="GstTagList*"/>
-        </return-value>
-      </constructor>
-      <constructor name="new_full"
-                   c:identifier="gst_tag_list_new_full"
-                   doc="Creates a new taglist and appends the values for the given tags. It expects
-tag-value pairs like gst_tag_list_add(), and a NULL terminator after the
-last pair. The type of the values is implicit and is documented in the API
-reference, but can also be queried at runtime with gst_tag_get_type(). It
-is an error to pass a value of a type not matching the tag type into this
-function. The tag list will make copies of any arguments passed
-(e.g. strings, buffers).
-needed."
-                   version="0.10.24">
-        <return-value transfer-ownership="full" doc="when no longer">
-          <type name="TagList" c:type="GstTagList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="copy"
-              c:identifier="gst_tag_list_copy"
-              doc="Copies a given #GstTagList.">
-        <return-value transfer-ownership="full">
-          <type name="TagList" c:type="GstTagList*"/>
-        </return-value>
-      </method>
-      <method name="is_empty"
-              c:identifier="gst_tag_list_is_empty"
-              doc="Checks if the given taglist is empty."
-              version="0.10.11">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="insert"
-              c:identifier="gst_tag_list_insert"
-              doc="Inserts the tags of the @from list into the first list using the given mode.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="from" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="merge"
-              c:identifier="gst_tag_list_merge"
-              doc="Merges the two given lists into a new list. If one of the lists is NULL, a
-copy of the other is returned. If both lists are NULL, NULL is returned.">
-        <return-value transfer-ownership="full">
-          <type name="TagList" c:type="GstTagList*"/>
-        </return-value>
-        <parameters>
-          <parameter name="list2" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="free"
-              c:identifier="gst_tag_list_free"
-              doc="Frees the given list and all associated values.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="get_tag_size"
-              c:identifier="gst_tag_list_get_tag_size"
-              doc="Checks how many value are stored in this tag list for the given tag.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add"
-              c:identifier="gst_tag_list_add"
-              doc="Sets the values for the given tags using the specified mode.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_values"
-              c:identifier="gst_tag_list_add_values"
-              doc="Sets the GValues for the given tags using the specified mode.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_value"
-              c:identifier="gst_tag_list_add_value"
-              doc="Sets the GValue for a given tag using the specified mode."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="remove_tag"
-              c:identifier="gst_tag_list_remove_tag"
-              doc="Removes the given tag from the taglist.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="foreach"
-              c:identifier="gst_tag_list_foreach"
-              doc="Calls the given function for each tag inside the tag list. Note that if there
-is no tag, the function won&apos;t be called at all.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="TagForeachFunc" c:type="GstTagForeachFunc"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_value_index"
-              c:identifier="gst_tag_list_get_value_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-available or the tag doesn&apos;t have as many entries">
-        <return-value transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_char"
-              c:identifier="gst_tag_list_get_char"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_char_index"
-              c:identifier="gst_tag_list_get_char_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="full">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uchar"
-              c:identifier="gst_tag_list_get_uchar"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uchar_index"
-              c:identifier="gst_tag_list_get_uchar_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_boolean"
-              c:identifier="gst_tag_list_get_boolean"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_boolean_index"
-              c:identifier="gst_tag_list_get_boolean_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="boolean" c:type="gboolean*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_int"
-              c:identifier="gst_tag_list_get_int"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_int_index"
-              c:identifier="gst_tag_list_get_int_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int" c:type="gint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uint"
-              c:identifier="gst_tag_list_get_uint"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="uint" c:type="guint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uint_index"
-              c:identifier="gst_tag_list_get_uint_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="uint" c:type="guint*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_long"
-              c:identifier="gst_tag_list_get_long"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="long" c:type="glong*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_long_index"
-              c:identifier="gst_tag_list_get_long_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="long" c:type="glong*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_ulong"
-              c:identifier="gst_tag_list_get_ulong"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="ulong" c:type="gulong*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_ulong_index"
-              c:identifier="gst_tag_list_get_ulong_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="ulong" c:type="gulong*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_int64"
-              c:identifier="gst_tag_list_get_int64"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_int64_index"
-              c:identifier="gst_tag_list_get_int64_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="int64" c:type="gint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uint64"
-              c:identifier="gst_tag_list_get_uint64"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_uint64_index"
-              c:identifier="gst_tag_list_get_uint64_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="uint64" c:type="guint64*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_float"
-              c:identifier="gst_tag_list_get_float"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="float" c:type="gfloat*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_float_index"
-              c:identifier="gst_tag_list_get_float_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="float" c:type="gfloat*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_double"
-              c:identifier="gst_tag_list_get_double"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_double_index"
-              c:identifier="gst_tag_list_get_double_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" direction="out" transfer-ownership="full">
-            <type name="double" c:type="gdouble*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_string"
-              c:identifier="gst_tag_list_get_string"
-              doc="Copies the contents for the given tag into the value, possibly merging
-multiple values into one if multiple values are associated with the tag.
-Use gst_tag_list_get_string_index (list, tag, 0, value) if you want
-to retrieve the first string associated with this tag unmodified.
-The resulting string in @value will be in UTF-8 encoding and should be
-freed by the caller using g_free when no longer needed. Since 0.10.24 the
-returned string is also guaranteed to be non-NULL and non-empty.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_string_index"
-              c:identifier="gst_tag_list_get_string_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-The resulting string in @value will be in UTF-8 encoding and should be
-freed by the caller using g_free when no longer needed. Since 0.10.24 the
-returned string is also guaranteed to be non-NULL and non-empty.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pointer"
-              c:identifier="gst_tag_list_get_pointer"
-              doc="Copies the contents for the given tag into the value, merging multiple values
-into one if multiple values are associated with the tag.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="any" c:type="gpointer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pointer_index"
-              c:identifier="gst_tag_list_get_pointer_index"
-              doc="Gets the value that is at the given index for the given tag in the given
-list.
-given list.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="any" c:type="gpointer*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_date"
-              c:identifier="gst_tag_list_get_date"
-              doc="Copies the first date for the given tag in the taglist into the variable
-pointed to by @value. Free the date with g_date_free() when it is no longer
-needed.
-given list or if it was #NULL.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GLib.Date" c:type="GDate**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_date_index"
-              c:identifier="gst_tag_list_get_date_index"
-              doc="Gets the date that is at the given index for the given tag in the given
-list and copies it into the variable pointed to by @value. Free the date
-with g_date_free() when it is no longer needed.
-given list or if it was #NULL.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GLib.Date" c:type="GDate**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_buffer"
-              c:identifier="gst_tag_list_get_buffer"
-              doc="Copies the first buffer for the given tag in the taglist into the variable
-pointed to by @value. Free the buffer with gst_buffer_unref() when it is
-no longer needed.
-given list or if it was #NULL."
-              version="0.10.23">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer**"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_buffer_index"
-              c:identifier="gst_tag_list_get_buffer_index"
-              doc="Gets the buffer that is at the given index for the given tag in the given
-list and copies it into the variable pointed to by @value. Free the buffer
-with gst_buffer_unref() when it is no longer needed.
-given list or if it was #NULL."
-              version="0.10.23">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="index" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="Buffer" c:type="GstBuffer**"/>
-          </parameter>
-        </parameters>
-      </method>
-    </record>
-    <callback name="TagMergeFunc"
-              c:type="GstTagMergeFunc"
-              doc="A function for merging multiple values of a tag used when registering
-tags.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="src" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="TagMergeMode"
-                 doc="The different tag merging modes are basically replace, overwrite and append,
-already in the element and (B) the ones that are supplied to the element (
-e.g. via gst_tag_setter_merge_tags() / gst_tag_setter_add_tags() or a
-%GST_EVENT_TAG), how are these tags merged?
-In the table below this is shown for the cases that a tag exists in the list
-(A) or does not exists (!A) and combinations thereof.
-&lt;table frame=&quot;all&quot; colsep=&quot;1&quot; rowsep=&quot;1&quot;&gt;
-&lt;title&gt;merge mode&lt;/title&gt;
-&lt;tgroup cols=&apos;5&apos; align=&apos;left&apos;&gt;
-&lt;thead&gt;
-&lt;row&gt;
-&lt;entry&gt;merge mode&lt;/entry&gt;
-&lt;entry&gt;A + B&lt;/entry&gt;
-&lt;entry&gt;A + !B&lt;/entry&gt;
-&lt;entry&gt;!A + B&lt;/entry&gt;
-&lt;entry&gt;!A + !B&lt;/entry&gt;
-&lt;/row&gt;
-&lt;/thead&gt;
-&lt;tbody&gt;
-&lt;row&gt;
-&lt;entry&gt;REPLACE_ALL&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;/row&gt;
-&lt;row&gt;
-&lt;entry&gt;REPLACE&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;/row&gt;
-&lt;row&gt;
-&lt;entry&gt;APPEND&lt;/entry&gt;
-&lt;entry&gt;A, B&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;/row&gt;
-&lt;row&gt;
-&lt;entry&gt;PREPEND&lt;/entry&gt;
-&lt;entry&gt;B, A&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;/row&gt;
-&lt;row&gt;
-&lt;entry&gt;KEEP&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;B&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;/row&gt;
-&lt;row&gt;
-&lt;entry&gt;KEEP_ALL&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;A&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;entry&gt;-&lt;/entry&gt;
-&lt;/row&gt;
-&lt;/tbody&gt;
-&lt;/tgroup&gt;
-&lt;/table&gt;"
-                 c:type="GstTagMergeMode">
-      <member name="undefined"
-              value="0"
-              c:identifier="GST_TAG_MERGE_UNDEFINED"/>
-      <member name="replace_all"
-              value="1"
-              c:identifier="GST_TAG_MERGE_REPLACE_ALL"/>
-      <member name="replace" value="2" c:identifier="GST_TAG_MERGE_REPLACE"/>
-      <member name="append" value="3" c:identifier="GST_TAG_MERGE_APPEND"/>
-      <member name="prepend" value="4" c:identifier="GST_TAG_MERGE_PREPEND"/>
-      <member name="keep" value="5" c:identifier="GST_TAG_MERGE_KEEP"/>
-      <member name="keep_all" value="6" c:identifier="GST_TAG_MERGE_KEEP_ALL"/>
-      <member name="count" value="7" c:identifier="GST_TAG_MERGE_COUNT"/>
-    </enumeration>
-    <interface name="TagSetter"
-               c:type="GstTagSetter"
-               doc="Opaque #GstTagSetter data structure."
-               glib:type-name="GstTagSetter"
-               glib:get-type="gst_tag_setter_get_type">
-      <prerequisite name="Element"/>
-      <method name="reset_tags"
-              c:identifier="gst_tag_setter_reset_tags"
-              doc="Reset the internal taglist. Elements should call this from within the
-state-change handler."
-              version="0.10.22">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="merge_tags"
-              c:identifier="gst_tag_setter_merge_tags"
-              doc="Merges the given list into the setter&apos;s list using the given mode.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="list" transfer-ownership="none">
-            <type name="TagList" c:type="GstTagList*"/>
-          </parameter>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_tags"
-              c:identifier="gst_tag_setter_add_tags"
-              doc="Adds the given tag / value pairs on the setter using the given merge mode.
-The list must be terminated with NULL.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_tag_values"
-              c:identifier="gst_tag_setter_add_tag_values"
-              doc="Adds the given tag / GValue pairs on the setter using the given merge mode.
-The list must be terminated with NULL.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="add_tag_value"
-              c:identifier="gst_tag_setter_add_tag_value"
-              doc="Adds the given tag / GValue pair on the setter using the given merge mode."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-          <parameter name="tag" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="value" transfer-ownership="none">
-            <type name="GObject.Value" c:type="GValue*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_tag_list"
-              c:identifier="gst_tag_setter_get_tag_list"
-              doc="Returns the current list of tags the setter uses.  The list should not be
-modified or freed.
-or NULL if none is used.">
-        <return-value transfer-ownership="none">
-          <type name="TagList" c:type="GstTagList*"/>
-        </return-value>
-      </method>
-      <method name="set_tag_merge_mode"
-              c:identifier="gst_tag_setter_set_tag_merge_mode"
-              doc="Sets the given merge mode that is used for adding tags from events to tags
-specified by this interface. The default is #GST_TAG_MERGE_KEEP, which keeps
-the tags set with this interface and discards tags from events.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mode" transfer-ownership="none">
-            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_tag_merge_mode"
-              c:identifier="gst_tag_setter_get_tag_merge_mode"
-              doc="Queries the mode by which tags inside the setter are overwritten by tags
-from events">
-        <return-value transfer-ownership="full">
-          <type name="TagMergeMode" c:type="GstTagMergeMode"/>
-        </return-value>
-      </method>
-    </interface>
-    <record name="TagSetterIFace"
-            c:type="GstTagSetterIFace"
-            doc="#GstTagSetterIFace interface.">
-      <field name="g_iface" writable="1">
-        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
-      </field>
-    </record>
-    <class name="Task"
-           c:type="GstTask"
-           doc="The #GstTask object."
-           parent="Object"
-           glib:type-name="GstTask"
-           glib:get-type="gst_task_get_type"
-           glib:type-struct="TaskClass">
-      <function name="cleanup_all"
-                c:identifier="gst_task_cleanup_all"
-                doc="Wait for all tasks to be stopped. This is mainly used internally
-to ensure proper cleanup of internal data structures in test suites.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </function>
-      <function name="create"
-                c:identifier="gst_task_create"
-                doc="Create a new Task that will repeatedly call the provided @func
-with @data as a parameter. Typically the task will run in
-a new thread.
-The function cannot be changed after the task has been created. You
-must create a new #GstTask to change the function.
-This function will not yet create and start a thread. Use gst_task_start() or
-gst_task_pause() to create and start the GThread.
-Before the task can be used, a #GStaticRecMutex must be configured using the
-gst_task_set_lock() function. This lock will always be acquired while
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="Task" c:type="GstTask*"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="1">
-            <type name="TaskFunction" c:type="GstTaskFunction"/>
-          </parameter>
-          <parameter name="data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </function>
-      <method name="set_lock"
-              c:identifier="gst_task_set_lock"
-              doc="Set the mutex used by the task. The mutex will be acquired before
-calling the #GstTaskFunction.
-This function has to be called before calling gst_task_pause() or
-gst_task_start().
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="mutex" transfer-ownership="none">
-            <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_priority"
-              c:identifier="gst_task_set_priority"
-              doc="Changes the priority of @task to @priority.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="priority" transfer-ownership="none">
-            <type name="GLib.ThreadPriority" c:type="GThreadPriority"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_pool"
-              c:identifier="gst_task_get_pool"
-              doc="Get the #GstTaskPool that this task will use for its streaming
-threads.
-MT safe.
-after usage."
-              version="0.10.24">
-        <return-value transfer-ownership="full">
-          <type name="TaskPool" c:type="GstTaskPool*"/>
-        </return-value>
-      </method>
-      <method name="set_pool"
-              c:identifier="gst_task_set_pool"
-              doc="Set @pool as the new GstTaskPool for @task. Any new streaming threads that
-will be created by @task will now use @pool.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="pool" transfer-ownership="none">
-            <type name="TaskPool" c:type="GstTaskPool*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="set_thread_callbacks"
-              c:identifier="gst_task_set_thread_callbacks"
-              doc="Set callbacks which will be executed when a new thread is needed, the thread
-function is entered and left and when the thread is joined.
-By default a thread for @task will be created from a default thread pool.
-Objects can use custom GThreads or can perform additional configuration of
-the threads (such as changing the thread priority) by installing callbacks.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="callbacks" transfer-ownership="none">
-            <type name="TaskThreadCallbacks" c:type="GstTaskThreadCallbacks*"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-          <parameter name="notify" transfer-ownership="none" scope="call">
-            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_state"
-              c:identifier="gst_task_get_state"
-              doc="Get the current state of the task.
-MT safe.">
-        <return-value transfer-ownership="full">
-          <type name="TaskState" c:type="GstTaskState"/>
-        </return-value>
-      </method>
-      <method name="set_state"
-              c:identifier="gst_task_set_state"
-              doc="Sets the state of @task to @state.
-The @task must have a lock associated with it using
-gst_task_set_lock() when going to GST_TASK_STARTED or GST_TASK_PAUSED or
-this function will return %FALSE.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="state" transfer-ownership="none">
-            <type name="TaskState" c:type="GstTaskState"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="start"
-              c:identifier="gst_task_start"
-              doc="Starts @task. The @task must have a lock associated with it using
-gst_task_set_lock() or this function will return %FALSE.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="stop"
-              c:identifier="gst_task_stop"
-              doc="Stops @task. This method merely schedules the task to stop and
-will not wait for the task to have completely stopped. Use
-gst_task_join() to stop and wait for completion.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="pause"
-              c:identifier="gst_task_pause"
-              doc="Pauses @task. This method can also be called on a task in the
-stopped state, in which case a thread will be started and will remain
-in the paused state. This function does not wait for the task to complete
-the paused state.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <method name="join"
-              c:identifier="gst_task_join"
-              doc="Joins @task. After this call, it is safe to unref the task
-and clean up the lock set with gst_task_set_lock().
-The task will automatically be stopped with this call.
-This function cannot be called from within a task function as this
-would cause a deadlock. The function will detect this and print a
-g_warning.
-MT safe.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="state">
-        <type name="TaskState" c:type="GstTaskState"/>
-      </field>
-      <field name="cond">
-        <type name="GLib.Cond" c:type="GCond*"/>
-      </field>
-      <field name="lock">
-        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
-      </field>
-      <field name="func">
-        <type name="TaskFunction" c:type="GstTaskFunction"/>
-      </field>
-      <field name="data">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="running">
-        <type name="boolean" c:type="gboolean"/>
-      </field>
-      <union name="abidata" c:type="abidata">
-        <record name="ABI" c:type="ABI">
-          <field name="thread" writable="1">
-            <type name="GLib.Thread" c:type="GThread*"/>
-          </field>
-        </record>
-        <field name="_gst_reserved" writable="1">
-          <array zero-terminated="0" c:type="gpointer" fixed-size="3">
-            <type name="any"/>
-          </array>
-        </field>
-      </union>
-      <field name="priv">
-        <type name="TaskPrivate" c:type="GstTaskPrivate*"/>
-      </field>
-    </class>
-    <record name="TaskClass"
-            c:type="GstTaskClass"
-            glib:is-gtype-struct-for="Task">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="pool">
-        <type name="TaskPool" c:type="GstTaskPool*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <callback name="TaskFunction"
-              c:type="GstTaskFunction"
-              doc="A function that will repeatedly be called in the thread created by
-a #GstTask.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="void*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <class name="TaskPool"
-           c:type="GstTaskPool"
-           doc="The #GstTaskPool object."
-           parent="Object"
-           glib:type-name="GstTaskPool"
-           glib:get-type="gst_task_pool_get_type"
-           glib:type-struct="TaskPoolClass">
-      <constructor name="new"
-                   c:identifier="gst_task_pool_new"
-                   doc="Create a new default task pool. The default task pool will use a regular
-GThreadPool for threads."
-                   version="0.10.24">
-        <return-value transfer-ownership="full" doc="after usage.">
-          <type name="TaskPool" c:type="GstTaskPool*"/>
-        </return-value>
-      </constructor>
-      <virtual-method name="prepare" invoker="prepare" throws="1">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="cleanup" invoker="cleanup">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="push" invoker="push" throws="1">
-        <return-value transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </return-value>
-        <parameters>
-          <parameter name="func" transfer-ownership="none">
-            <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none" closure="2">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <virtual-method name="join" invoker="join">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="prepare"
-              c:identifier="gst_task_pool_prepare"
-              doc="Prepare the taskpool for accepting gst_task_pool_push() operations.
-MT safe."
-              version="0.10.24"
-              throws="1">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="push"
-              c:identifier="gst_task_pool_push"
-              doc="Start the execution of a new thread from @pool.
-function. This pointer can be NULL, you must check @error to detect
-errors."
-              version="0.10.24"
-              throws="1">
-        <return-value transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </return-value>
-        <parameters>
-          <parameter name="func"
-                     transfer-ownership="none"
-                     scope="call"
-                     closure="2">
-            <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
-          </parameter>
-          <parameter name="user_data" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="join"
-              c:identifier="gst_task_pool_join"
-              doc="Join a task and/or return it to the pool. @id is the id obtained from
-gst_task_pool_push()."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="id" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="cleanup"
-              c:identifier="gst_task_pool_cleanup"
-              doc="Wait for all tasks to be stopped. This is mainly used internally
-to ensure proper cleanup of internal data structures in test suites.
-MT safe."
-              version="0.10.24">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="pool">
-        <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="TaskPoolClass"
-            c:type="GstTaskPoolClass"
-            glib:is-gtype-struct-for="TaskPool"
-            doc="The #GstTaskPoolClass object.">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="prepare">
-        <callback name="prepare" c:type="prepare" throws="1">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="pool" transfer-ownership="none">
-              <type name="TaskPool" c:type="GstTaskPool*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="cleanup">
-        <callback name="cleanup" c:type="cleanup">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="pool" transfer-ownership="none">
-              <type name="TaskPool" c:type="GstTaskPool*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="push">
-        <callback name="push" c:type="push" throws="1">
-          <return-value transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </return-value>
-          <parameters>
-            <parameter name="pool" transfer-ownership="none">
-              <type name="TaskPool" c:type="GstTaskPool*"/>
-            </parameter>
-            <parameter name="func" transfer-ownership="none">
-              <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
-            </parameter>
-            <parameter name="user_data" transfer-ownership="none" closure="2">
-              <type name="any" c:type="gpointer"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="join">
-        <callback name="join" c:type="join">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="pool" transfer-ownership="none">
-              <type name="TaskPool" c:type="GstTaskPool*"/>
-            </parameter>
-            <parameter name="id" transfer-ownership="none">
-              <type name="any" c:type="gpointer"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <callback name="TaskPoolFunction"
-              c:type="GstTaskPoolFunction"
-              doc="Task function, see gst_task_pool_push()."
-              version="0.10.24">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="void*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="TaskPrivate" c:type="GstTaskPrivate">
-    </record>
-    <enumeration name="TaskState"
-                 doc="The different states a task can be in"
-                 c:type="GstTaskState">
-      <member name="started" value="0" c:identifier="GST_TASK_STARTED"/>
-      <member name="stopped" value="1" c:identifier="GST_TASK_STOPPED"/>
-      <member name="paused" value="2" c:identifier="GST_TASK_PAUSED"/>
-    </enumeration>
-    <record name="TaskThreadCallbacks"
-            c:type="GstTaskThreadCallbacks"
-            doc="thread enters its function.
-to leave its function
-Custom GstTask thread callback functions that can be installed."
-            version="0.10.24">
-      <field name="enter_thread">
-        <type name="any" c:type="pointer"/>
-      </field>
-      <field name="leave_thread">
-        <type name="any" c:type="pointer"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <record name="Trace" c:type="GstTrace" doc="Opaque #GstTrace structure.">
-      <field name="filename" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="fd" writable="1">
-        <type name="int" c:type="int"/>
-      </field>
-      <field name="buf" writable="1">
-        <type name="TraceEntry" c:type="GstTraceEntry*"/>
-      </field>
-      <field name="bufsize" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <field name="bufoffset" writable="1">
-        <type name="int" c:type="gint"/>
-      </field>
-      <constructor name="new"
-                   c:identifier="gst_trace_new"
-                   doc="Create a ringbuffer of @size in the file with @filename to
-store trace results in.">
-        <return-value transfer-ownership="full">
-          <type name="Trace" c:type="GstTrace*"/>
-        </return-value>
-        <parameters>
-          <parameter name="filename" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="int" c:type="gint"/>
-          </parameter>
-        </parameters>
-      </constructor>
-      <method name="destroy"
-              c:identifier="gst_trace_destroy"
-              doc="Flush an close the previously allocated @trace.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="flush"
-              c:identifier="gst_trace_flush"
-              doc="Flush any pending trace entries in @trace to the trace file.
-flushed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="text_flush"
-              c:identifier="gst_trace_text_flush"
-              doc="Flush any pending trace entries in @trace to the trace file,
-formatted as a text line with timestamp and sequence numbers.
-flushed.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-      <method name="set_default"
-              c:identifier="gst_trace_set_default"
-              doc="Set the default #GstTrace to @trace.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-      </method>
-    </record>
-    <record name="TraceEntry" c:type="GstTraceEntry">
-      <field name="timestamp" writable="1">
-        <type name="int64" c:type="gint64"/>
-      </field>
-      <field name="sequence" writable="1">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="data" writable="1">
-        <type name="uint32" c:type="guint32"/>
-      </field>
-      <field name="message" writable="1">
-        <array zero-terminated="0" c:type="gchar" fixed-size="112">
-          <type name="int8"/>
-        </array>
-      </field>
-    </record>
-    <record name="TypeFind"
-            c:type="GstTypeFind"
-            doc="Object that stores typefind callbacks. To use with #GstTypeFindFactory.">
-      <field name="peek">
-        <type name="any" c:type="pointer"/>
-      </field>
-      <field name="suggest">
-        <type name="any" c:type="pointer"/>
-      </field>
-      <field name="data" writable="1">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="get_length">
-        <type name="any" c:type="pointer"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <method name="peek"
-              c:identifier="gst_type_find_peek"
-              doc="Returns the @size bytes of the stream to identify beginning at offset. If
-offset is a positive number, the offset is relative to the beginning of the
-stream, if offset is a negative number the offset is relative to the end of
-the stream. The returned memory is valid until the typefinding function
-returns and must not be freed.">
-        <return-value transfer-ownership="full">
-          <array c:type="guint8*">
-            <type name="uint8"/>
-          </array>
-        </return-value>
-        <parameters>
-          <parameter name="offset" transfer-ownership="none">
-            <type name="int64" c:type="gint64"/>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="suggest"
-              c:identifier="gst_type_find_suggest"
-              doc="If a #GstTypeFindFunction calls this function it suggests the caps with the
-given probability. A #GstTypeFindFunction may supply different suggestions
-in one call.
-It is up to the caller of the #GstTypeFindFunction to interpret these values.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="probability" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="caps" transfer-ownership="none">
-            <type name="Caps" c:type="GstCaps*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="suggest_simple"
-              c:identifier="gst_type_find_suggest_simple"
-              doc="arguments passed to gst_structure_new() (ie. triplets of field name,
-field GType and field value)
-If a #GstTypeFindFunction calls this function it suggests the caps with the
-given probability. A #GstTypeFindFunction may supply different suggestions
-in one call. It is up to the caller of the #GstTypeFindFunction to interpret
-these values.
-This function is similar to gst_type_find_suggest(), only that instead of
-passing a #GstCaps argument you can create the caps on the fly in the same
-way as you can with gst_caps_new_simple().
-Make sure you terminate the list of arguments with a NULL argument and that
-the values passed have the correct type (in terms of width in bytes when
-passed to the vararg function - this applies particularly to gdouble and
-guint64 arguments)."
-              version="0.10.20">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="probability" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="media_type" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter name="fieldname" transfer-ownership="none">
-            <type name="utf8" c:type="char*"/>
-          </parameter>
-          <parameter transfer-ownership="none">
-            <varargs>
-            </varargs>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_length"
-              c:identifier="gst_type_find_get_length"
-              doc="Get the length of the data stream.">
-        <return-value transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </return-value>
-      </method>
-    </record>
-    <class name="TypeFindFactory"
-           c:type="GstTypeFindFactory"
-           doc="Object that stores information about a typefind function."
-           parent="PluginFeature"
-           glib:type-name="GstTypeFindFactory"
-           glib:get-type="gst_type_find_factory_get_type"
-           glib:type-struct="TypeFindFactoryClass">
-      <function name="get_list"
-                c:identifier="gst_type_find_factory_get_list"
-                doc="Gets the list of all registered typefind factories. You must free the
-list using gst_plugin_feature_list_free.
-The returned factories are sorted by highest rank first, and then by
-factory name. (behaviour change since 0.10.26)">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </function>
-      <method name="get_extensions"
-              c:identifier="gst_type_find_factory_get_extensions"
-              doc="Gets the extensions associated with a #GstTypeFindFactory. The returned
-array should not be changed. If you need to change stuff in it, you should
-copy it using g_strdupv().  This function may return NULL to indicate
-a 0-length list.">
-        <return-value transfer-ownership="full">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </method>
-      <method name="get_caps"
-              c:identifier="gst_type_find_factory_get_caps"
-              doc="Gets the #GstCaps associated with a typefind factory.">
-        <return-value transfer-ownership="full">
-          <type name="Caps" c:type="GstCaps*"/>
-        </return-value>
-      </method>
-      <method name="call_function"
-              c:identifier="gst_type_find_factory_call_function"
-              doc="members must be set.
-Calls the #GstTypeFindFunction associated with this factory.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="find" transfer-ownership="none">
-            <type name="TypeFind" c:type="GstTypeFind*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <field name="feature">
-        <type name="PluginFeature" c:type="GstPluginFeature"/>
-      </field>
-      <field name="function">
-        <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
-      </field>
-      <field name="extensions">
-        <type name="utf8" c:type="gchar**"/>
-      </field>
-      <field name="caps">
-        <type name="Caps" c:type="GstCaps*"/>
-      </field>
-      <field name="user_data">
-        <type name="any" c:type="gpointer"/>
-      </field>
-      <field name="user_data_notify">
-        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </class>
-    <record name="TypeFindFactoryClass"
-            c:type="GstTypeFindFactoryClass"
-            glib:is-gtype-struct-for="TypeFindFactory">
-      <field name="parent">
-        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <callback name="TypeFindFunction"
-              c:type="GstTypeFindFunction"
-              doc="A function that will be called by typefinding.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="find" transfer-ownership="none">
-          <type name="TypeFind" c:type="GstTypeFind*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <enumeration name="TypeFindProbability"
-                 doc="The probability of the typefind function. Higher values have more certainty
-in doing a reliable typefind."
-                 c:type="GstTypeFindProbability">
-      <member name="minimum" value="1" c:identifier="GST_TYPE_FIND_MINIMUM"/>
-      <member name="possible"
-              value="50"
-              c:identifier="GST_TYPE_FIND_POSSIBLE"/>
-      <member name="likely" value="80" c:identifier="GST_TYPE_FIND_LIKELY"/>
-      <member name="nearly_certain"
-              value="99"
-              c:identifier="GST_TYPE_FIND_NEARLY_CERTAIN"/>
-      <member name="maximum" value="100" c:identifier="GST_TYPE_FIND_MAXIMUM"/>
-    </enumeration>
-    <record name="TypeNameData"
-            c:type="GstTypeNameData"
-            doc="Structure used for filtering based on @name and @type.">
-      <field name="name" writable="1">
-        <type name="utf8" c:type="gchar*"/>
-      </field>
-      <field name="type" writable="1">
-        <type name="GType" c:type="GType"/>
-      </field>
-    </record>
-    <interface name="URIHandler"
-               c:type="GstURIHandler"
-               doc="Opaque #GstURIHandler structure."
-               glib:type-name="GstURIHandler"
-               glib:get-type="gst_uri_handler_get_type"
-               glib:type-struct="URIHandlerInterface">
-      <virtual-method name="get_uri" invoker="get_uri">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </virtual-method>
-      <virtual-method name="set_uri" invoker="set_uri">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="uri" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="get_uri_type"
-              c:identifier="gst_uri_handler_get_uri_type"
-              doc="Gets the type of the given URI handler
-Returns #GST_URI_UNKNOWN if the @handler isn&apos;t implemented correctly.">
-        <return-value transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </return-value>
-      </method>
-      <method name="get_protocols"
-              c:identifier="gst_uri_handler_get_protocols"
-              doc="Gets the list of protocols supported by @handler. This list may not be
-modified.
-Returns NULL if the @handler isn&apos;t implemented properly, or the @handler
-doesn&apos;t support any protocols.">
-        <return-value transfer-ownership="full">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </return-value>
-      </method>
-      <method name="get_uri"
-              c:identifier="gst_uri_handler_get_uri"
-              doc="Gets the currently handled URI.
-Returns NULL if there are no URI currently handled. The returned
-string must not be modified or freed.">
-        <return-value transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </return-value>
-      </method>
-      <method name="set_uri"
-              c:identifier="gst_uri_handler_set_uri"
-              doc="Tries to set the URI of the given handler.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="uri" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="new_uri"
-              c:identifier="gst_uri_handler_new_uri"
-              doc="Emits the new-uri signal for a given handler, when that handler has a new URI.
-This function should only be called by URI handlers themselves.">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="uri" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <glib:signal name="new-uri"
-                   doc="The URI of the given @handler has changed.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="uri" transfer-ownership="none">
-            <type name="utf8" c:type="gchararray"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </interface>
-    <record name="URIHandlerInterface"
-            c:type="GstURIHandlerInterface"
-            glib:is-gtype-struct-for="URIHandler"
-            doc="This is for use by bindings that need to pass context when creating a URI
-Handler. If implemented, get_protocols will be used in preference to
-Any #GstElement using this interface should implement these methods.">
-      <field name="parent">
-        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
-      </field>
-      <field name="new_uri">
-        <callback name="new_uri" c:type="new_uri">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="handler" transfer-ownership="none">
-              <type name="URIHandler" c:type="GstURIHandler*"/>
-            </parameter>
-            <parameter name="uri" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_type">
-        <callback name="get_type" c:type="get_type">
-          <return-value transfer-ownership="full">
-            <type name="URIType" c:type="GstURIType"/>
-          </return-value>
-        </callback>
-      </field>
-      <field name="get_protocols">
-        <callback name="get_protocols" c:type="get_protocols">
-          <return-value transfer-ownership="full">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </return-value>
-        </callback>
-      </field>
-      <field name="get_uri">
-        <callback name="get_uri" c:type="get_uri">
-          <return-value transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </return-value>
-          <parameters>
-            <parameter name="handler" transfer-ownership="none">
-              <type name="URIHandler" c:type="GstURIHandler*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="set_uri">
-        <callback name="set_uri" c:type="set_uri">
-          <return-value transfer-ownership="none">
-            <type name="boolean" c:type="gboolean"/>
-          </return-value>
-          <parameters>
-            <parameter name="handler" transfer-ownership="none">
-              <type name="URIHandler" c:type="GstURIHandler*"/>
-            </parameter>
-            <parameter name="uri" transfer-ownership="none">
-              <type name="utf8" c:type="gchar*"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_type_full">
-        <callback name="get_type_full" c:type="get_type_full">
-          <return-value transfer-ownership="full">
-            <type name="URIType" c:type="GstURIType"/>
-          </return-value>
-          <parameters>
-            <parameter name="type" transfer-ownership="none">
-              <type name="GType" c:type="GType"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="get_protocols_full">
-        <callback name="get_protocols_full" c:type="get_protocols_full">
-          <return-value transfer-ownership="full">
-            <array c:type="gchar**">
-              <type name="utf8"/>
-            </array>
-          </return-value>
-          <parameters>
-            <parameter name="type" transfer-ownership="none">
-              <type name="GType" c:type="GType"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <enumeration name="URIType"
-                 doc="The different types of URI direction."
-                 c:type="GstURIType">
-      <member name="unknown" value="0" c:identifier="GST_URI_UNKNOWN"/>
-      <member name="sink" value="1" c:identifier="GST_URI_SINK"/>
-      <member name="src" value="2" c:identifier="GST_URI_SRC"/>
-    </enumeration>
-    <constant name="USECOND" value="0">
-      <type name="int"/>
-    </constant>
-    <constant name="VALUE_EQUAL" value="0">
-      <type name="int"/>
-    </constant>
-    <constant name="VALUE_GREATER_THAN" value="1">
-      <type name="int"/>
-    </constant>
-    <constant name="VALUE_LESS_THAN" value="-1">
-      <type name="int"/>
-    </constant>
-    <constant name="VALUE_UNORDERED" value="2">
-      <type name="int"/>
-    </constant>
-    <callback name="ValueCompareFunc"
-              c:type="GstValueCompareFunc"
-              doc="Used together with gst_value_compare() to compare #GValue items.
-or GST_VALUE_UNORDERED">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="ValueDeserializeFunc"
-              c:type="GstValueDeserializeFunc"
-              doc="Used by gst_value_deserialize() to parse a non-binary form into the #GValue.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="s" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="ValueIntersectFunc"
-              c:type="GstValueIntersectFunc"
-              doc="Used by gst_value_intersect() to perform intersection for a specific #GValue
-type. If the intersection is non-empty, the result is
-placed in @dest and TRUE is returned.  If the intersection is
-empty, @dest is unmodified and FALSE is returned.
-Register a new implementation with gst_value_register_intersect_func().">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="ValueSerializeFunc"
-              c:type="GstValueSerializeFunc"
-              doc="Used by gst_value_serialize() to obtain a non-binary form of the #GValue.">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <callback name="ValueSubtractFunc"
-              c:type="GstValueSubtractFunc"
-              doc="Used by gst_value_subtract() to perform subtraction for a specific #GValue
-type. Register a new implementation with gst_value_register_subtract_func().">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="minuend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="subtrahend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <record name="ValueTable"
-            c:type="GstValueTable"
-            doc="VTable for the #GValue @type.">
-      <field name="type" writable="1">
-        <type name="GType" c:type="GType"/>
-      </field>
-      <field name="compare" writable="1">
-        <type name="ValueCompareFunc" c:type="GstValueCompareFunc"/>
-      </field>
-      <field name="serialize" writable="1">
-        <type name="ValueSerializeFunc" c:type="GstValueSerializeFunc"/>
-      </field>
-      <field name="deserialize" writable="1">
-        <type name="ValueDeserializeFunc" c:type="GstValueDeserializeFunc"/>
-      </field>
-      <field name="_gst_reserved" writable="1">
-        <array zero-terminated="0" c:type="void*" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <callback name="ValueUnionFunc"
-              c:type="GstValueUnionFunc"
-              doc="Used by gst_value_union() to perform unification for a specific #GValue
-type. Register a new implementation with gst_value_register_union_func().">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </callback>
-    <class name="XML"
-           c:type="GstXML"
-           doc="XML parser object"
-           parent="Object"
-           glib:type-name="GstXML"
-           glib:get-type="gst_xml_get_type"
-           glib:type-struct="XMLClass">
-      <constructor name="new"
-                   c:identifier="gst_xml_new"
-                   doc="Create a new GstXML parser object.">
-        <return-value transfer-ownership="full">
-          <type name="XML" c:type="GstXML*"/>
-        </return-value>
-      </constructor>
-      <function name="write"
-                c:identifier="gst_xml_write"
-                doc="Converts the given element into an XML presentation.">
-        <return-value transfer-ownership="full">
-          <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
-        </return-value>
-        <parameters>
-          <parameter name="element" transfer-ownership="none">
-            <type name="Element" c:type="GstElement*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <function name="make_element"
-                c:identifier="gst_xml_make_element"
-                doc="Load the element from the XML description">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="cur" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-          <parameter name="parent" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-        </parameters>
-      </function>
-      <virtual-method name="object_saved">
-        <return-value transfer-ownership="none">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="Object" c:type="GstObject*"/>
-          </parameter>
-          <parameter name="self" transfer-ownership="none">
-            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-          </parameter>
-        </parameters>
-      </virtual-method>
-      <method name="parse_doc"
-              c:identifier="gst_xml_parse_doc"
-              doc="Fills the GstXML object with the elements from the
-xmlDocPtr.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="doc" transfer-ownership="none">
-            <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
-          </parameter>
-          <parameter name="root" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_file"
-              c:identifier="gst_xml_parse_file"
-              doc="Fills the GstXML object with the corresponding elements from
-the XML file fname. Optionally it will only build the element from
-the element node root (if it is not NULL). This feature is useful
-if you only want to build a specific element from an XML file
-but not the pipeline it is embedded in.
-Pass &quot;-&quot; as fname to read from stdin. You can also pass a URI
-of any format that libxml supports, including http.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="fname" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-          <parameter name="root" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="parse_memory"
-              c:identifier="gst_xml_parse_memory"
-              doc="Fills the GstXML object with the corresponding elements from
-an in memory XML buffer.">
-        <return-value transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </return-value>
-        <parameters>
-          <parameter name="buffer" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-          <parameter name="size" transfer-ownership="none">
-            <type name="uint" c:type="guint"/>
-          </parameter>
-          <parameter name="root" transfer-ownership="none">
-            <type name="utf8" c:type="gchar*"/>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_element"
-              c:identifier="gst_xml_get_element"
-              doc="This function is used to get a pointer to the GstElement corresponding
-to name in the pipeline description. You would use this if you have
-to do anything to the element after loading.">
-        <return-value transfer-ownership="full">
-          <type name="Element" c:type="GstElement*"/>
-        </return-value>
-        <parameters>
-          <parameter name="name" transfer-ownership="none">
-            <array c:type="guchar*">
-              <type name="uint8"/>
-            </array>
-          </parameter>
-        </parameters>
-      </method>
-      <method name="get_topelements"
-              c:identifier="gst_xml_get_topelements"
-              doc="Retrieve a list of toplevel elements.
-of the list and must not free or modify the list. The caller also does not
-own a reference to any of the elements in the list and should obtain its own
-reference using gst_object_ref() if necessary.">
-        <return-value transfer-ownership="full">
-          <type name="GLib.List" c:type="GList*"/>
-        </return-value>
-      </method>
-      <field name="object">
-        <type name="Object" c:type="GstObject"/>
-      </field>
-      <field name="topelements">
-        <type name="GLib.List" c:type="GList*"/>
-      </field>
-      <field name="ns">
-        <type name="libxml2.NsPtr" c:type="xmlNsPtr"/>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-      <glib:signal name="object-loaded"
-                   doc="Signals that a new object has been deserialized.">
-        <return-value transfer-ownership="full">
-          <type name="none" c:type="void"/>
-        </return-value>
-        <parameters>
-          <parameter name="object" transfer-ownership="none">
-            <type name="Object" c:type="GstObject"/>
-          </parameter>
-          <parameter name="xml_node" transfer-ownership="none">
-            <type name="any" c:type="gpointer"/>
-          </parameter>
-        </parameters>
-      </glib:signal>
-    </class>
-    <record name="XMLClass"
-            c:type="GstXMLClass"
-            glib:is-gtype-struct-for="XML">
-      <field name="parent_class">
-        <type name="ObjectClass" c:type="GstObjectClass"/>
-      </field>
-      <field name="object_loaded">
-        <callback name="object_loaded" c:type="object_loaded">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="xml" transfer-ownership="none">
-              <type name="XML" c:type="GstXML*"/>
-            </parameter>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="self" transfer-ownership="none">
-              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="object_saved">
-        <callback name="object_saved" c:type="object_saved">
-          <return-value transfer-ownership="none">
-            <type name="none" c:type="void"/>
-          </return-value>
-          <parameters>
-            <parameter name="xml" transfer-ownership="none">
-              <type name="XML" c:type="GstXML*"/>
-            </parameter>
-            <parameter name="object" transfer-ownership="none">
-              <type name="Object" c:type="GstObject*"/>
-            </parameter>
-            <parameter name="self" transfer-ownership="none">
-              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-            </parameter>
-          </parameters>
-        </callback>
-      </field>
-      <field name="_gst_reserved">
-        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
-          <type name="any"/>
-        </array>
-      </field>
-    </record>
-    <function name="alloc_trace_available"
-              c:identifier="gst_alloc_trace_available"
-              doc="Check if alloc tracing was compiled into the core
-tracing enabled.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-    </function>
-    <function name="alloc_trace_get"
-              c:identifier="gst_alloc_trace_get"
-              doc="Get the named alloc trace object.
-no alloc tracer was registered with that name.">
-      <return-value transfer-ownership="full">
-        <type name="AllocTrace" c:type="GstAllocTrace*"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="alloc_trace_list"
-              c:identifier="gst_alloc_trace_list"
-              doc="Get a list of all registered alloc trace objects.">
-      <return-value transfer-ownership="none">
-        <type name="GLib.List" c:type="GList*"/>
-      </return-value>
-    </function>
-    <function name="alloc_trace_live_all"
-              c:identifier="gst_alloc_trace_live_all"
-              doc="Get the total number of live registered alloc trace objects.">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="int"/>
-      </return-value>
-    </function>
-    <function name="alloc_trace_print_all"
-              c:identifier="gst_alloc_trace_print_all"
-              doc="Print the status of all registered alloc trace objects.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-    </function>
-    <function name="alloc_trace_print_live"
-              c:identifier="gst_alloc_trace_print_live"
-              doc="Print the status of all registered alloc trace objects, ignoring those
-without live objects.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-    </function>
-    <function name="alloc_trace_set_flags_all"
-              c:identifier="gst_alloc_trace_set_flags_all"
-              doc="Enable the specified options on all registered alloc trace
-objects.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="AllocTraceFlags" c:type="GstAllocTraceFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="atomic_int_set"
-              c:identifier="gst_atomic_int_set"
-              doc="Unconditionally sets the atomic integer to @value."
-              deprecated="Use g_atomic_int_set().">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="atomic_int" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-        <parameter name="value" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="buffer_try_new_and_alloc"
-              c:identifier="gst_buffer_try_new_and_alloc"
-              doc="Tries to create a newly allocated buffer with data of the given size. If
-the requested amount of memory can&apos;t be allocated, NULL will be returned.
-The buffer memory is not cleared.
-Note that when @size == 0, the buffer data pointer will be NULL.
-MT safe."
-              version="0.10.13">
-      <return-value transfer-ownership="full">
-        <type name="Buffer" c:type="GstBuffer*"/>
-      </return-value>
-      <parameters>
-        <parameter name="size" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="caps_from_string"
-              c:identifier="gst_caps_from_string"
-              doc="Converts @caps from a string representation.">
-      <return-value transfer-ownership="full">
-        <type name="Caps" c:type="GstCaps*"/>
-      </return-value>
-      <parameters>
-        <parameter name="string" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="caps_load_thyself"
-              c:identifier="gst_caps_load_thyself"
-              doc="Creates a #GstCaps from its XML serialization.">
-      <return-value transfer-ownership="full">
-        <type name="Caps" c:type="GstCaps*"/>
-      </return-value>
-      <parameters>
-        <parameter name="parent" transfer-ownership="none">
-          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_child_added"
-              c:identifier="gst_child_proxy_child_added"
-              doc="Emits the &quot;child-added&quot; signal.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="child" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_child_removed"
-              c:identifier="gst_child_proxy_child_removed"
-              doc="Emits the &quot;child-removed&quot; signal.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="child" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_get"
-              c:identifier="gst_child_proxy_get"
-              doc="Gets properties of the parent object and its children.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="first_property_name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter transfer-ownership="none">
-          <varargs>
-          </varargs>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_get_property"
-              c:identifier="gst_child_proxy_get_property"
-              doc="Gets a single property using the GstChildProxy mechanism.
-You are responsible for for freeing it by calling g_value_unset()">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_lookup"
-              c:identifier="gst_child_proxy_lookup"
-              doc="Looks up which object and #GParamSpec would be effected by the given @name.
-case the values for @pspec and @target are not modified. Unref @target after
-usage.
-MT safe.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="target" transfer-ownership="none">
-          <type name="Object" c:type="GstObject**"/>
-        </parameter>
-        <parameter name="pspec" transfer-ownership="none">
-          <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_set"
-              c:identifier="gst_child_proxy_set"
-              doc="Sets properties of the parent object and its children.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="first_property_name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter transfer-ownership="none">
-          <varargs>
-          </varargs>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="child_proxy_set_property"
-              c:identifier="gst_child_proxy_set_property"
-              doc="Sets a single property using the GstChildProxy mechanism.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="class_signal_connect"
-              c:identifier="gst_class_signal_connect">
-      <return-value transfer-ownership="none">
-        <type name="uint" c:type="guint"/>
-      </return-value>
-      <parameters>
-        <parameter name="klass" transfer-ownership="none">
-          <type name="ObjectClass" c:type="GstObjectClass*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="func_data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="class_signal_emit_by_name"
-              c:identifier="gst_class_signal_emit_by_name"
-              doc="emits the named class signal.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="Object" c:type="GstObject*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="self" transfer-ownership="none">
-          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_add_log_function"
-              c:identifier="gst_debug_add_log_function"
-              doc="Adds the logging function to the list of logging functions.
-Be sure to use G_GNUC_NO_INSTRUMENT on that function, it is needed.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="func"
-                   transfer-ownership="none"
-                   scope="call"
-                   closure="1">
-          <type name="LogFunction" c:type="GstLogFunction"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_construct_term_color"
-              c:identifier="gst_debug_construct_term_color"
-              doc="Constructs a string that can be used for getting the desired color in color
-terminals.
-You need to free the string after use.">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="colorinfo" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_construct_win_color"
-              c:identifier="gst_debug_construct_win_color"
-              doc="Constructs an integer that can be used for getting the desired color in
-windows&apos; terminals (cmd.exe). As there is no mean to underline, we simply
-ignore this attribute.
-This function returns 0 on non-windows machines."
-              version="0.10.23">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="colorinfo" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_get_all_categories"
-              c:identifier="gst_debug_get_all_categories"
-              doc="Returns a snapshot of a all categories that are currently in use . This list
-may change anytime.
-The caller has to free the list after use.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.SList" c:type="GSList*"/>
-      </return-value>
-    </function>
-    <function name="debug_get_default_threshold"
-              c:identifier="gst_debug_get_default_threshold"
-              doc="Returns the default threshold that is used for new categories.">
-      <return-value transfer-ownership="full">
-        <type name="DebugLevel" c:type="GstDebugLevel"/>
-      </return-value>
-    </function>
-    <function name="debug_is_active"
-              c:identifier="gst_debug_is_active"
-              doc="Checks if debugging output is activated.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-    </function>
-    <function name="debug_is_colored"
-              c:identifier="gst_debug_is_colored"
-              doc="Checks if the debugging output should be colored.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-    </function>
-    <function name="debug_level_get_name"
-              c:identifier="gst_debug_level_get_name"
-              doc="Get the string representation of a debugging level">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="level" transfer-ownership="none">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_log"
-              c:identifier="gst_debug_log"
-              doc="Logs the given message using the currently registered debugging handlers.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="category" transfer-ownership="none">
-          <type name="DebugCategory" c:type="GstDebugCategory*"/>
-        </parameter>
-        <parameter name="level" transfer-ownership="none">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </parameter>
-        <parameter name="file" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="function" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="line" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="object" transfer-ownership="none">
-          <type name="GObject.Object" c:type="GObject*"/>
-        </parameter>
-        <parameter name="format" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter transfer-ownership="none">
-          <varargs>
-          </varargs>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_log_default"
-              c:identifier="gst_debug_log_default"
-              doc="The default logging handler used by GStreamer. Logging functions get called
-whenever a macro like GST_DEBUG or similar is used. This function outputs the
-message and additional info using the glib error handler.
-You can add other handlers by using gst_debug_add_log_function().
-And you can remove this handler by calling
-gst_debug_remove_log_function(gst_debug_log_default);">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="category" transfer-ownership="none">
-          <type name="DebugCategory" c:type="GstDebugCategory*"/>
-        </parameter>
-        <parameter name="level" transfer-ownership="none">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </parameter>
-        <parameter name="file" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="function" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="line" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="object" transfer-ownership="none">
-          <type name="GObject.Object" c:type="GObject*"/>
-        </parameter>
-        <parameter name="message" transfer-ownership="none">
-          <type name="DebugMessage" c:type="GstDebugMessage*"/>
-        </parameter>
-        <parameter name="unused" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_print_stack_trace"
-              c:identifier="gst_debug_print_stack_trace"
-              doc="If GST_ENABLE_FUNC_INSTRUMENTATION is defined a stacktrace is available for
-gstreamer code, which can be printed with this function.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-    </function>
-    <function name="debug_remove_log_function"
-              c:identifier="gst_debug_remove_log_function"
-              doc="Removes all registered instances of the given logging functions.">
-      <return-value transfer-ownership="none">
-        <type name="uint" c:type="guint"/>
-      </return-value>
-      <parameters>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="LogFunction" c:type="GstLogFunction"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_remove_log_function_by_data"
-              c:identifier="gst_debug_remove_log_function_by_data"
-              doc="Removes all registered instances of log functions with the given user data.">
-      <return-value transfer-ownership="none">
-        <type name="uint" c:type="guint"/>
-      </return-value>
-      <parameters>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_set_active"
-              c:identifier="gst_debug_set_active"
-              doc="If activated, debugging messages are sent to the debugging
-handlers.
-It makes sense to deactivate it for speed issues.
-&lt;note&gt;&lt;para&gt;This function is not threadsafe. It makes sense to only call it
-during initialization.&lt;/para&gt;&lt;/note&gt;">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="active" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_set_colored"
-              c:identifier="gst_debug_set_colored"
-              doc="Sets or unsets the use of coloured debugging output.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="colored" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_set_default_threshold"
-              c:identifier="gst_debug_set_default_threshold"
-              doc="Sets the default threshold to the given level and updates all categories to
-use this threshold.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="level" transfer-ownership="none">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_set_threshold_for_name"
-              c:identifier="gst_debug_set_threshold_for_name"
-              doc="Sets all categories which match the given glob style pattern to the given
-level.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="level" transfer-ownership="none">
-          <type name="DebugLevel" c:type="GstDebugLevel"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="debug_unset_threshold_for_name"
-              c:identifier="gst_debug_unset_threshold_for_name"
-              doc="Resets all categories with the given name back to the default level.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="default_registry_check_feature_version"
-              c:identifier="gst_default_registry_check_feature_version"
-              doc="Checks whether a plugin feature by the given name exists in the
-default registry and whether its version is at least the
-version required.
-the same as the required version or newer, and #FALSE otherwise.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="feature_name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="min_major" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="min_minor" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="min_micro" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="deinit"
-              c:identifier="gst_deinit"
-              doc="Clean up any resources created by GStreamer in gst_init().
-It is normally not needed to call this function in a normal application
-as the resources will automatically be freed when the program terminates.
-This function is therefore mostly used by testsuites and other memory
-profiling tools.
-After this call GStreamer (including this method) should not be used anymore.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-    </function>
-    <function name="error_get_message"
-              c:identifier="gst_error_get_message"
-              doc="Get a string describing the error message in the current locale.
-current locale.">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="domain" transfer-ownership="none">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </parameter>
-        <parameter name="code" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="event_type_get_flags"
-              c:identifier="gst_event_type_get_flags"
-              doc="Gets the #GstEventTypeFlags associated with @type.">
-      <return-value transfer-ownership="full">
-        <type name="EventTypeFlags" c:type="GstEventTypeFlags"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="EventType" c:type="GstEventType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="event_type_get_name"
-              c:identifier="gst_event_type_get_name"
-              doc="Get a printable name for the given event type. Do not modify or free.">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="EventType" c:type="GstEventType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="event_type_to_quark"
-              c:identifier="gst_event_type_to_quark"
-              doc="Get the unique quark for the given event type.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="EventType" c:type="GstEventType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="filter_run"
-              c:identifier="gst_filter_run"
-              doc="Iterates over the elements in @list, calling @func with the
-list item data for each item.  If @func returns TRUE, @data is
-prepended to the list of results returned.  If @first is true,
-the search is halted after the first result is found.
-Since gst_filter_run() knows nothing about the type of @data, no
-reference will be taken (if @data refers to an object) and no copy of
-results.
-(the data contained in the list is a flat copy and does need to be
-unreferenced or freed).">
-      <return-value transfer-ownership="full" doc="when no longer needed">
-        <type name="GLib.List" c:type="GList*"/>
-      </return-value>
-      <parameters>
-        <parameter name="list" transfer-ownership="none">
-          <type name="GLib.List" c:type="GList*"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="FilterFunc" c:type="GstFilterFunc"/>
-        </parameter>
-        <parameter name="first" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="flow_get_name"
-              c:identifier="gst_flow_get_name"
-              doc="Gets a string representing the given flow return.">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="ret" transfer-ownership="none">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="flow_to_quark"
-              c:identifier="gst_flow_to_quark"
-              doc="Get the unique quark for the given GstFlowReturn.
-invalid return was specified.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </return-value>
-      <parameters>
-        <parameter name="ret" transfer-ownership="none">
-          <type name="FlowReturn" c:type="GstFlowReturn"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="format_get_by_nick"
-              c:identifier="gst_format_get_by_nick"
-              doc="Return the format registered with the given nick.
-if the format was not registered.">
-      <return-value transfer-ownership="full">
-        <type name="Format" c:type="GstFormat"/>
-      </return-value>
-      <parameters>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="format_get_details"
-              c:identifier="gst_format_get_details"
-              doc="Get details about the given format.
-MT safe.">
-      <return-value transfer-ownership="none">
-        <type name="FormatDefinition" c:type="GstFormatDefinition*"/>
-      </return-value>
-      <parameters>
-        <parameter name="format" transfer-ownership="none">
-          <type name="Format" c:type="GstFormat"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="format_get_name"
-              c:identifier="gst_format_get_name"
-              doc="Get a printable name for the given format. Do not modify or free.
-the format is unknown.">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="format" transfer-ownership="none">
-          <type name="Format" c:type="GstFormat"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="format_iterate_definitions"
-              c:identifier="gst_format_iterate_definitions"
-              doc="Iterate all the registered formats. The format definition is read
-only.">
-      <return-value transfer-ownership="full">
-        <type name="Iterator" c:type="GstIterator*"/>
-      </return-value>
-    </function>
-    <function name="format_register"
-              c:identifier="gst_format_register"
-              doc="Create a new GstFormat based on the nick or return an
-already registered format with that nick.
-with the same nick.
-MT safe.">
-      <return-value transfer-ownership="full">
-        <type name="Format" c:type="GstFormat"/>
-      </return-value>
-      <parameters>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="description" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="format_to_quark"
-              c:identifier="gst_format_to_quark"
-              doc="Get the unique quark for the given format.
-is unknown.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </return-value>
-      <parameters>
-        <parameter name="format" transfer-ownership="none">
-          <type name="Format" c:type="GstFormat"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="formats_contains"
-              c:identifier="gst_formats_contains"
-              doc="See if the given format is inside the format array.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="formats" transfer-ownership="none">
-          <type name="Format" c:type="GstFormat*"/>
-        </parameter>
-        <parameter name="format" transfer-ownership="none">
-          <type name="Format" c:type="GstFormat"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="implements_interface_cast"
-              c:identifier="gst_implements_interface_cast"
-              doc="cast a given object to an interface type, and check whether this
-interface is supported for this specific instance.">
-      <return-value transfer-ownership="none">
-        <type name="any" c:type="gpointer"/>
-      </return-value>
-      <parameters>
-        <parameter name="from"
-                   transfer-ownership="none"
-                   doc="from which to cast to the interface">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="implements_interface_check"
-              c:identifier="gst_implements_interface_check"
-              doc="check a given object for an interface implementation, and check
-whether this interface is supported for this specific instance.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="from"
-                   transfer-ownership="none"
-                   doc="from which to check from for the interface">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="init"
-              c:identifier="gst_init"
-              doc="Initializes the GStreamer library, setting up internal path lists,
-registering built-in elements, and loading standard plugins.
-Unless the plugin registry is disabled at compile time, the registry will be
-loaded. By default this will also check if the registry cache needs to be
-updated and rescan all plugins if needed. See gst_update_registry() for
-details and section
-&lt;link linkend=&quot;gst-running&quot;&gt;Running GStreamer Applications&lt;/link&gt;
-for how to disable automatic registry updates.
-This function should be called before calling any other GLib functions. If
-this is not an option, your program must initialise the GLib thread system
-using g_thread_init() before any other GLib functions are called.
-&lt;note&gt;&lt;para&gt;
-This function will terminate your program if it was unable to initialize
-GStreamer for some reason.  If you want your program to fall back,
-use gst_init_check() instead.
-&lt;/para&gt;&lt;/note&gt;
-functions in other glib-style libraries, such as gtk_init().  In
-particular, unknown command line options cause this function to
-abort program execution.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="argc"
-                   direction="inout"
-                   transfer-ownership="full"
-                   doc="pointer to application&apos;s argc">
-          <type name="int" c:type="int*"/>
-        </parameter>
-        <parameter name="argv"
-                   direction="inout"
-                   transfer-ownership="full"
-                   allow-none="1"
-                   doc="pointer to application&apos;s argv">
-          <array length="0" c:type="char**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="init_check"
-              c:identifier="gst_init_check"
-              doc="Initializes the GStreamer library, setting up internal path lists,
-registering built-in elements, and loading standard plugins.
-This function will return %FALSE if GStreamer could not be initialized
-for some reason.  If you want your program to fail fatally,
-use gst_init() instead.
-This function should be called before calling any other GLib functions. If
-this is not an option, your program must initialise the GLib thread system
-using g_thread_init() before any other GLib functions are called."
-              throws="1">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="argc"
-                   direction="inout"
-                   transfer-ownership="full"
-                   doc="pointer to application&apos;s argc">
-          <type name="int" c:type="int*"/>
-        </parameter>
-        <parameter name="argv"
-                   direction="inout"
-                   transfer-ownership="full"
-                   allow-none="1"
-                   doc="pointer to application&apos;s argv">
-          <array length="0" c:type="char**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="init_get_option_group"
-              c:identifier="gst_init_get_option_group"
-              doc="Returns a #GOptionGroup with GStreamer&apos;s argument specifications. The
-group is set up to use standard GOption callbacks, so when using this
-group in combination with GOption parsing methods, all argument parsing
-and initialization is automated.
-This function is useful if you want to integrate GStreamer with other
-libraries that use GOption (see g_option_context_add_group() ).
-If you use this function, you should make sure you initialise the GLib
-threading system as one of the very first things in your program
-(see the example at the beginning of this section).">
-      <return-value transfer-ownership="full">
-        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
-      </return-value>
-    </function>
-    <function name="is_tag_list"
-              c:identifier="gst_is_tag_list"
-              doc="Checks if the given pointer is a taglist.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="p" transfer-ownership="none">
-          <type name="any" c:type="gconstpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="message_type_get_name"
-              c:identifier="gst_message_type_get_name"
-              doc="Get a printable name for the given message type. Do not modify or free.">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="MessageType" c:type="GstMessageType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="message_type_to_quark"
-              c:identifier="gst_message_type_to_quark"
-              doc="Get the unique quark for the given message type.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="MessageType" c:type="GstMessageType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="param_spec_fraction"
-              c:identifier="gst_param_spec_fraction"
-              doc="This function creates a fraction GParamSpec for use by objects/elements
-that want to expose properties of fraction type. This function is typically
-used in connection with g_object_class_install_property() in a GObjects&apos;s
-instance_init function."
-              version="0.10.14">
-      <return-value transfer-ownership="full">
-        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="blurb" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="min_num" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="min_denom" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="max_num" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="max_denom" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="default_num" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="default_denom" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="param_spec_mini_object"
-              c:identifier="gst_param_spec_mini_object"
-              doc="Creates a new #GParamSpec instance that hold #GstMiniObject references.">
-      <return-value transfer-ownership="full">
-        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="blurb" transfer-ownership="none">
-          <type name="utf8" c:type="char*"/>
-        </parameter>
-        <parameter name="object_type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_bin_from_description"
-              c:identifier="gst_parse_bin_from_description"
-              doc="for unlinked source or sink pads within the bin
-This is a convenience wrapper around gst_parse_launch() to create a
-#GstBin from a gst-launch-style pipeline description. See
-gst_parse_launch() and the gst-launch man page for details about the
-syntax. Ghost pads on the bin for unlinked source or sink pads
-within the bin can automatically be created (but only a maximum of
-one ghost pad for each direction will be created; if you expect
-multiple unlinked source pads or multiple unlinked sink pads
-and want them all ghosted, you will have to create the ghost pads
-yourself)."
-              version="0.10.3"
-              throws="1">
-      <return-value transfer-ownership="full">
-        <type name="Element" c:type="GstElement*"/>
-      </return-value>
-      <parameters>
-        <parameter name="bin_description" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="ghost_unlinked_pads" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_bin_from_description_full"
-              c:identifier="gst_parse_bin_from_description_full"
-              doc="for unlinked source or sink pads within the bin
-This is a convenience wrapper around gst_parse_launch() to create a
-#GstBin from a gst-launch-style pipeline description. See
-gst_parse_launch() and the gst-launch man page for details about the
-syntax. Ghost pads on the bin for unlinked source or sink pads
-within the bin can automatically be created (but only a maximum of
-one ghost pad for each direction will be created; if you expect
-multiple unlinked source pads or multiple unlinked sink pads
-and want them all ghosted, you will have to create the ghost pads
-yourself)."
-              version="0.10.20"
-              throws="1">
-      <return-value transfer-ownership="full">
-        <type name="Element" c:type="GstElement*"/>
-      </return-value>
-      <parameters>
-        <parameter name="bin_description" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="ghost_unlinked_pads" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-        <parameter name="context" transfer-ownership="none" doc="or %NULL">
-          <type name="ParseContext" c:type="GstParseContext*"/>
-        </parameter>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="ParseFlags" c:type="GstParseFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_launch"
-              c:identifier="gst_parse_launch"
-              doc="Create a new pipeline based on command line syntax.
-Please note that you might get a return value that is not %NULL even though
-the @error is set. In this case there was a recoverable parsing error and you
-can try to play the pipeline.
-element is specified by the @pipeline_description, all elements are put into
-a #GstPipeline, which than is returned."
-              throws="1">
-      <return-value transfer-ownership="full">
-        <type name="Element" c:type="GstElement*"/>
-      </return-value>
-      <parameters>
-        <parameter name="pipeline_description" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_launch_full"
-              c:identifier="gst_parse_launch_full"
-              doc="Create a new pipeline based on command line syntax.
-Please note that you might get a return value that is not %NULL even though
-the @error is set. In this case there was a recoverable parsing error and you
-can try to play the pipeline.
-element is specified by the @pipeline_description, all elements are put into
-a #GstPipeline, which then is returned."
-              version="0.10.20"
-              throws="1">
-      <return-value transfer-ownership="full">
-        <type name="Element" c:type="GstElement*"/>
-      </return-value>
-      <parameters>
-        <parameter name="pipeline_description" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="context" transfer-ownership="none" doc="or %NULL">
-          <type name="ParseContext" c:type="GstParseContext*"/>
-        </parameter>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="ParseFlags" c:type="GstParseFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_launchv"
-              c:identifier="gst_parse_launchv"
-              doc="Create a new element based on command line syntax.
-An error does not mean that the pipeline could not be constructed."
-              throws="1">
-      <return-value transfer-ownership="full">
-        <type name="Element" c:type="GstElement*"/>
-      </return-value>
-      <parameters>
-        <parameter name="argv" transfer-ownership="none">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="parse_launchv_full"
-              c:identifier="gst_parse_launchv_full"
-              doc="Create a new element based on command line syntax.
-An error does not mean that the pipeline could not be constructed.
-partially-constructed bin or element will be returned and @error will be set
-(unless you passed #GST_PARSE_FLAG_FATAL_ERRORS in @flags, then %NULL will
-always be returned on failure)"
-              version="0.10.20"
-              throws="1">
-      <return-value transfer-ownership="full">
-        <type name="Element" c:type="GstElement*"/>
-      </return-value>
-      <parameters>
-        <parameter name="argv" transfer-ownership="none">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-        <parameter name="context" transfer-ownership="none" doc="or %NULL">
-          <type name="ParseContext" c:type="GstParseContext*"/>
-        </parameter>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="ParseFlags" c:type="GstParseFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="print_element_args"
-              c:identifier="gst_print_element_args"
-              doc="Print the element argument in a human readable format in the given
-GString.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="buf" transfer-ownership="none">
-          <type name="GLib.String" c:type="GString*"/>
-        </parameter>
-        <parameter name="indent" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="element" transfer-ownership="none">
-          <type name="Element" c:type="GstElement*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="print_pad_caps"
-              c:identifier="gst_print_pad_caps"
-              doc="Write the pad capabilities in a human readable format into
-the given GString.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="buf" transfer-ownership="none">
-          <type name="GLib.String" c:type="GString*"/>
-        </parameter>
-        <parameter name="indent" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="pad" transfer-ownership="none">
-          <type name="Pad" c:type="GstPad*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="query_type_get_by_nick"
-              c:identifier="gst_query_type_get_by_nick"
-              doc="Get the query type registered with @nick.
-if the query was not registered.">
-      <return-value transfer-ownership="full">
-        <type name="QueryType" c:type="GstQueryType"/>
-      </return-value>
-      <parameters>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="query_type_get_details"
-              c:identifier="gst_query_type_get_details"
-              doc="Get details about the given #GstQueryType.">
-      <return-value transfer-ownership="none">
-        <type name="QueryTypeDefinition" c:type="GstQueryTypeDefinition*"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="query_type_get_name"
-              c:identifier="gst_query_type_get_name"
-              doc="Get a printable name for the given query type. Do not modify or free.">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="query" transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="query_type_iterate_definitions"
-              c:identifier="gst_query_type_iterate_definitions"
-              doc="Get a #GstIterator of all the registered query types. The definitions
-iterated over are read only.">
-      <return-value transfer-ownership="full">
-        <type name="Iterator" c:type="GstIterator*"/>
-      </return-value>
-    </function>
-    <function name="query_type_register"
-              c:identifier="gst_query_type_register"
-              doc="Create a new GstQueryType based on the nick or return an
-already registered query with that nick
-with the same nick.">
-      <return-value transfer-ownership="full">
-        <type name="QueryType" c:type="GstQueryType"/>
-      </return-value>
-      <parameters>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="description" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="query_type_to_quark"
-              c:identifier="gst_query_type_to_quark"
-              doc="Get the unique quark for the given query type.">
-      <return-value transfer-ownership="full">
-        <type name="GLib.Quark" c:type="GQuark"/>
-      </return-value>
-      <parameters>
-        <parameter name="query" transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="query_types_contains"
-              c:identifier="gst_query_types_contains"
-              doc="See if the given #GstQueryType is inside the @types query types array.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="types" transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType*"/>
-        </parameter>
-        <parameter name="type" transfer-ownership="none">
-          <type name="QueryType" c:type="GstQueryType"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="segtrap_is_enabled"
-              c:identifier="gst_segtrap_is_enabled"
-              doc="Some functions in the GStreamer core might install a custom SIGSEGV handler
-to better catch and report errors to the application. Currently this feature
-is enabled by default when loading plugins.
-Applications might want to disable this behaviour with the
-gst_segtrap_set_enabled() function. This is typically done if the application
-wants to install its own handler without GStreamer interfering."
-              version="0.10.10">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-    </function>
-    <function name="segtrap_set_enabled"
-              c:identifier="gst_segtrap_set_enabled"
-              doc="Applications might want to disable/enable the SIGSEGV handling of
-the GStreamer core. See gst_segtrap_is_enabled() for more information."
-              version="0.10.10">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="enabled" transfer-ownership="none">
-          <type name="boolean" c:type="gboolean"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="structure_empty_new"
-              c:identifier="gst_structure_empty_new"
-              doc="Creates a new, empty #GstStructure with the given @name.
-See gst_structure_set_name() for constraints on the @name parameter.">
-      <return-value transfer-ownership="full">
-        <type name="Structure" c:type="GstStructure*"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="structure_from_string"
-              c:identifier="gst_structure_from_string"
-              doc="Creates a #GstStructure from a string representation.
-If end is not NULL, a pointer to the place inside the given string
-where parsing ended will be returned.
-be parsed. Free with gst_structure_free() after use.">
-      <return-value transfer-ownership="full">
-        <type name="Structure" c:type="GstStructure*"/>
-      </return-value>
-      <parameters>
-        <parameter name="string" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="end" transfer-ownership="none">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="structure_id_empty_new"
-              c:identifier="gst_structure_id_empty_new"
-              doc="Creates a new, empty #GstStructure with the given name as a GQuark.">
-      <return-value transfer-ownership="full">
-        <type name="Structure" c:type="GstStructure*"/>
-      </return-value>
-      <parameters>
-        <parameter name="quark" transfer-ownership="none">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="structure_id_new"
-              c:identifier="gst_structure_id_new"
-              doc="Creates a new #GstStructure with the given name as a GQuark, followed by
-fieldname quark, GType, argument(s) &quot;triplets&quot; in the same format as
-gst_structure_id_set(). Basically a convenience wrapper around
-gst_structure_id_empty_new() and gst_structure_id_set().
-The last variable argument must be NULL (or 0)."
-              version="0.10.24">
-      <return-value transfer-ownership="full">
-        <type name="Structure" c:type="GstStructure*"/>
-      </return-value>
-      <parameters>
-        <parameter name="name_quark" transfer-ownership="none">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </parameter>
-        <parameter name="field_quark" transfer-ownership="none">
-          <type name="GLib.Quark" c:type="GQuark"/>
-        </parameter>
-        <parameter transfer-ownership="none">
-          <varargs>
-          </varargs>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_exists"
-              c:identifier="gst_tag_exists"
-              doc="Checks if the given type is already registered.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_get_description"
-              c:identifier="gst_tag_get_description"
-              doc="Returns the human-readable description of this tag, You must not change or
-free this string.">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_get_flag"
-              c:identifier="gst_tag_get_flag"
-              doc="Gets the flag of @tag.">
-      <return-value transfer-ownership="full">
-        <type name="TagFlag" c:type="GstTagFlag"/>
-      </return-value>
-      <parameters>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_get_nick" c:identifier="gst_tag_get_nick">
-      <return-value transfer-ownership="none">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_get_type"
-              c:identifier="gst_tag_get_type"
-              doc="Gets the #GType used for this tag.">
-      <return-value transfer-ownership="none">
-        <type name="GType" c:type="GType"/>
-      </return-value>
-      <parameters>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_is_fixed"
-              c:identifier="gst_tag_is_fixed"
-              doc="Checks if the given tag is fixed. A fixed tag can only contain one value.
-Unfixed tags can contain lists of values.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_list_copy_value"
-              c:identifier="gst_tag_list_copy_value"
-              doc="Copies the contents for the given tag into the value,
-merging multiple values into one if multiple values are associated
-with the tag.
-You must g_value_unset() the value after use.
-given list.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="list" transfer-ownership="none">
-          <type name="TagList" c:type="GstTagList*"/>
-        </parameter>
-        <parameter name="tag" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_merge_strings_with_comma"
-              c:identifier="gst_tag_merge_strings_with_comma"
-              doc="This is a convenience function for the func argument of gst_tag_register().
-It concatenates all given strings using a comma. The tag must be registered
-as a G_TYPE_STRING or this function will fail.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="src" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_merge_use_first"
-              c:identifier="gst_tag_merge_use_first"
-              doc="This is a convenience function for the func argument of gst_tag_register().
-It creates a copy of the first value from the list.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="src" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="tag_register"
-              c:identifier="gst_tag_register"
-              doc="Registers a new tag type for the use with GStreamer&apos;s type system. If a type
-with that name is already registered, that one is used.
-The old registration may have used a different type however. So don&apos;t rely
-on your supplied values.
-that there can only be one single value for this tag in a tag list and
-any additional values will silenty be discarded when being added (unless
-#GST_TAG_MERGE_REPLACE, #GST_TAG_MERGE_REPLACE_ALL, or
-#GST_TAG_MERGE_PREPEND is used as merge mode, in which case the new
-value will replace the old one in the list).
-The merge function will be called from gst_tag_list_copy_value() when
-it is required that one or more values for a tag be condensed into
-one single value. This may happen from gst_tag_list_get_string(),
-gst_tag_list_get_int(), gst_tag_list_get_double() etc. What will happen
-exactly in that case depends on how the tag was registered and if a
-merge function was supplied and if so which one.
-gst_tag_merge_strings_with_comma().">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="flag" transfer-ownership="none">
-          <type name="TagFlag" c:type="GstTagFlag"/>
-        </parameter>
-        <parameter name="type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="nick" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="blurb" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="TagMergeFunc" c:type="GstTagMergeFunc"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="trace_read_tsc"
-              c:identifier="gst_trace_read_tsc"
-              doc="Read a platform independent timer value that can be used in
-benchmarks.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="dst" direction="out" transfer-ownership="full">
-          <type name="int64" c:type="gint64*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="type_find_register"
-              c:identifier="gst_type_find_register"
-              doc="passing NULL only works in GStreamer 0.10.16 and later)
-succeeds
-is unloaded.
-is unloaded.
-Registers a new typefind function to be used for typefinding. After
-registering this function will be available for typefinding.
-This function is typically called during an element&apos;s plugin initialization.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="plugin" transfer-ownership="none">
-          <type name="Plugin" c:type="GstPlugin*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="rank"
-                   transfer-ownership="none"
-                   doc="of this typefind function">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
-        </parameter>
-        <parameter name="extensions" transfer-ownership="none">
-          <array c:type="gchar**">
-            <type name="utf8"/>
-          </array>
-        </parameter>
-        <parameter name="possible_caps" transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </parameter>
-        <parameter name="data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="data_notify" transfer-ownership="none" scope="call">
-          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="type_register_static_full"
-              c:identifier="gst_type_register_static_full"
-              doc="derive from
-Location of the default vtable inititalization function for interface
-types. (optional)
-Location of the default vtable finalization function for interface types.
-(optional)
-instantiatable types only).
-memory for (0 indicates no caching). Ignored on recent GLib&apos;s.
-for instantiatable types only).
-GValues of this type (usually only useful for fundamental types).
-Helper function which constructs a #GTypeInfo structure and registers a
-GType, but which generates less linker overhead than a static const
-#GTypeInfo structure. For further details of the parameters, please see
-#GTypeInfo in the GLib documentation.
-Registers type_name as the name of a new static type derived from
-parent_type. The value of flags determines the nature (e.g. abstract or
-not) of the type. It works by filling a GTypeInfo struct and calling
-g_type_register_static()."
-              version="0.10.14">
-      <return-value transfer-ownership="none">
-        <type name="GType" c:type="GType"/>
-      </return-value>
-      <parameters>
-        <parameter name="parent_type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="type_name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="class_size" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="base_init" transfer-ownership="none" scope="call">
-          <type name="GObject.BaseInitFunc" c:type="GBaseInitFunc"/>
-        </parameter>
-        <parameter name="base_finalize" transfer-ownership="none" scope="call">
-          <type name="GObject.BaseFinalizeFunc" c:type="GBaseFinalizeFunc"/>
-        </parameter>
-        <parameter name="class_init" transfer-ownership="none" scope="call">
-          <type name="GObject.ClassInitFunc" c:type="GClassInitFunc"/>
-        </parameter>
-        <parameter name="class_finalize"
-                   transfer-ownership="none"
-                   scope="call"
-                   closure="7">
-          <type name="GObject.ClassFinalizeFunc" c:type="GClassFinalizeFunc"/>
-        </parameter>
-        <parameter name="class_data" transfer-ownership="none">
-          <type name="any" c:type="gconstpointer"/>
-        </parameter>
-        <parameter name="instance_size"
-                   transfer-ownership="none"
-                   doc="structure (required for">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="n_preallocs"
-                   transfer-ownership="none"
-                   doc="instances to reserve">
-          <type name="uint16" c:type="guint16"/>
-        </parameter>
-        <parameter name="instance_init" transfer-ownership="none" scope="call">
-          <type name="GObject.InstanceInitFunc" c:type="GInstanceInitFunc"/>
-        </parameter>
-        <parameter name="value_table" transfer-ownership="none">
-          <type name="GObject.TypeValueTable" c:type="GTypeValueTable*"/>
-        </parameter>
-        <parameter name="flags" transfer-ownership="none">
-          <type name="GObject.TypeFlags" c:type="GTypeFlags"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="update_registry"
-              c:identifier="gst_update_registry"
-              doc="Forces GStreamer to re-scan its plugin paths and update the default
-plugin registry.
-Applications will almost never need to call this function, it is only
-useful if the application knows new plugins have been installed (or old
-ones removed) since the start of the application (or, to be precise, the
-first call to gst_init()) and the application wants to make use of any
-newly-installed plugins without restarting the application.
-Applications should assume that the registry update is neither atomic nor
-thread-safe and should therefore not have any dynamic pipelines running
-(including the playbin and decodebin elements) and should also not create
-any elements or access the GStreamer registry while the update is in
-progress.
-Note that this function may block for a significant amount of time.
-imply that there were changes), otherwise %FALSE."
-              version="0.10.12">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-    </function>
-    <function name="uri_construct"
-              c:identifier="gst_uri_construct"
-              doc="Constructs a URI for a given valid protocol and location.
-is not valid, or the given location is NULL.">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="protocol" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="location" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="uri_get_location"
-              c:identifier="gst_uri_get_location"
-              doc="Extracts the location out of a given valid URI, ie. the protocol and &quot;://&quot;
-are stripped from the URI, which means that the location returned includes
-the hostname if one is specified. The returned string must be freed using
-g_free().
-the URI does not contain a location, an empty string is returned.">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="uri" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="uri_get_protocol"
-              c:identifier="gst_uri_get_protocol"
-              doc="Extracts the protocol out of a given valid URI. The returned string must be
-freed using g_free().">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="uri" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="uri_has_protocol"
-              c:identifier="gst_uri_has_protocol"
-              doc="Checks if the protocol of a given valid URI matches @protocol."
-              version="0.10.4">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="uri" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="protocol" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="uri_is_valid"
-              c:identifier="gst_uri_is_valid"
-              doc="Tests if the given string is a valid URI identifier. URIs start with a valid
-scheme followed by &quot;:&quot; and maybe a string identifying the location.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="uri" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="uri_protocol_is_supported"
-              c:identifier="gst_uri_protocol_is_supported"
-              doc="Checks if an element exists that supports the given URI protocol. Note
-that a positive return value does not imply that a subsequent call to
-gst_element_make_from_uri() is guaranteed to work."
-              version="0.10.13">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="type" transfer-ownership="none">
-          <type name="URIType" c:type="GstURIType"/>
-        </parameter>
-        <parameter name="protocol" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="uri_protocol_is_valid"
-              c:identifier="gst_uri_protocol_is_valid"
-              doc="Tests if the given string is a valid protocol identifier. Protocols
-must consist of alphanumeric characters, &apos;+&apos;, &apos;-&apos; and &apos;.&apos; and must
-start with a alphabetic character. See RFC 3986 Section 3.1.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="protocol" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_array_binary_search"
-              c:identifier="gst_util_array_binary_search"
-              doc="Searches inside @array for @search_data by using the comparison function
-As @search_data is always passed as second argument to @search_func it&apos;s
-not required that @search_data has the same type as the array elements.
-The complexity of this search function is O(log (num_elements))."
-              version="0.10.23">
-      <return-value transfer-ownership="none">
-        <type name="any" c:type="gpointer"/>
-      </return-value>
-      <parameters>
-        <parameter name="array" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-        <parameter name="num_elements" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-        <parameter name="element_size" transfer-ownership="none">
-          <type name="size_t" c:type="gsize"/>
-        </parameter>
-        <parameter name="search_func" transfer-ownership="none" scope="call">
-          <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
-        </parameter>
-        <parameter name="mode" transfer-ownership="none">
-          <type name="SearchMode" c:type="GstSearchMode"/>
-        </parameter>
-        <parameter name="search_data" transfer-ownership="none">
-          <type name="any" c:type="gconstpointer"/>
-        </parameter>
-        <parameter name="user_data" transfer-ownership="none">
-          <type name="any" c:type="gpointer"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_double_to_fraction"
-              c:identifier="gst_util_double_to_fraction"
-              doc="Transforms a #gdouble to a fraction and simplifies
-the result."
-              version="0.10.26">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="src" transfer-ownership="none">
-          <type name="double" c:type="gdouble"/>
-        </parameter>
-        <parameter name="dest_n" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-        <parameter name="dest_d" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_dump_mem"
-              c:identifier="gst_util_dump_mem"
-              doc="Dumps the memory block into a hex representation. Useful for debugging.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="mem" transfer-ownership="none">
-          <array c:type="guchar*">
-            <type name="uint8"/>
-          </array>
-        </parameter>
-        <parameter name="size" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_fraction_add"
-              c:identifier="gst_util_fraction_add"
-              doc="Adds the fractions @a_n/@a_d and @b_n/@b_d and stores
-the result in @res_n and @res_d."
-              version="0.10.26">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="a_n" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="a_d" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="b_n" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="b_d" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="res_n" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-        <parameter name="res_d" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_fraction_multiply"
-              c:identifier="gst_util_fraction_multiply"
-              doc="Multiplies the fractions @a_n/@a_d and @b_n/@b_d and stores
-the result in @res_n and @res_d."
-              version="0.10.26">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="a_n" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="a_d" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="b_n" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="b_d" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="res_n" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-        <parameter name="res_d" direction="out" transfer-ownership="full">
-          <type name="int" c:type="gint*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_fraction_to_double"
-              c:identifier="gst_util_fraction_to_double"
-              doc="Transforms a #gdouble to a fraction and simplifies the result."
-              version="0.10.26">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="src_n" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="src_d" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="dest" direction="out" transfer-ownership="full">
-          <type name="double" c:type="gdouble*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_gdouble_to_guint64"
-              c:identifier="gst_util_gdouble_to_guint64">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="double" c:type="gdouble"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_get_timestamp"
-              c:identifier="gst_util_get_timestamp"
-              doc="Get a timestamp as GstClockTime to be used for interval meassurements.
-The timestamp should not be interpreted in any other way."
-              version="0.10.16">
-      <return-value transfer-ownership="full">
-        <type name="ClockTime" c:type="GstClockTime"/>
-      </return-value>
-    </function>
-    <function name="util_greatest_common_divisor"
-              c:identifier="gst_util_greatest_common_divisor"
-              doc="Calculates the greatest common divisor of @a
-and @b."
-              version="0.10.26">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="a" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="b" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_guint64_to_gdouble"
-              c:identifier="gst_util_guint64_to_gdouble">
-      <return-value transfer-ownership="none">
-        <type name="double" c:type="gdouble"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_seqnum_compare"
-              c:identifier="gst_util_seqnum_compare"
-              doc="Compare two sequence numbers, handling wraparound.
-The current implementation just returns (gint32)(@s1 - @s2).
-positive number if @s1 is after @s2."
-              version="0.10.22">
-      <return-value transfer-ownership="none">
-        <type name="int32" c:type="gint32"/>
-      </return-value>
-      <parameters>
-        <parameter name="s1" transfer-ownership="none">
-          <type name="uint32" c:type="guint32"/>
-        </parameter>
-        <parameter name="s2" transfer-ownership="none">
-          <type name="uint32" c:type="guint32"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_seqnum_next"
-              c:identifier="gst_util_seqnum_next"
-              doc="Return a constantly incrementing sequence number.
-This function is used internally to GStreamer to be able to determine which
-events and messages are &quot;the same&quot;. For example, elements may set the seqnum
-on a segment-done message to be the same as that of the last seek event, to
-indicate that event and the message correspond to the same segment.
-overflow back to 0 at some point. Use gst_util_seqnum_compare() to make sure
-you handle wraparound correctly."
-              version="0.10.22">
-      <return-value transfer-ownership="none">
-        <type name="uint32" c:type="guint32"/>
-      </return-value>
-    </function>
-    <function name="util_set_object_arg"
-              c:identifier="gst_util_set_object_arg"
-              doc="Convertes the string value to the type of the objects argument and
-sets the argument with it.
-Note that this function silently returns if @object has no property named">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="object" transfer-ownership="none">
-          <type name="GObject.Object" c:type="GObject*"/>
-        </parameter>
-        <parameter name="name" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-        <parameter name="value" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_set_value_from_string"
-              c:identifier="gst_util_set_value_from_string"
-              doc="Converts the string to the type of the value and
-sets the value with it.
-Note that this function is dangerous as it does not return any indication
-if the conversion worked or not.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value_str" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_uint64_scale"
-              c:identifier="gst_util_uint64_scale"
-              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
-underflows and without loss of precision.
-This function can potentially be very slow if val and num are both
-greater than G_MAXUINT32.
-function returns G_MAXUINT64.  If the result is not exactly
-representable as an integer it is truncated.  See also
-gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil(),
-gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
-gst_util_uint64_scale_int_ceil().">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="val" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="num" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="denom" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_uint64_scale_ceil"
-              c:identifier="gst_util_uint64_scale_ceil"
-              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
-underflows and without loss of precision.
-This function can potentially be very slow if val and num are both
-greater than G_MAXUINT32.
-function returns G_MAXUINT64.  If the result is not exactly
-representable as an integer, it is rounded up.  See also
-gst_util_uint64_scale(), gst_util_uint64_scale_round(),
-gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
-gst_util_uint64_scale_int_ceil().">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="val" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="num" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="denom" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_uint64_scale_int"
-              c:identifier="gst_util_uint64_scale_int"
-              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
-underflows and without loss of precision.  @num must be non-negative and
-function returns G_MAXUINT64.  If the result is not exactly
-representable as an integer, it is truncated.  See also
-gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil(),
-gst_util_uint64_scale(), gst_util_uint64_scale_round(),
-gst_util_uint64_scale_ceil().">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="val" transfer-ownership="none" doc="to scale.">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="num" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="denom" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_uint64_scale_int_ceil"
-              c:identifier="gst_util_uint64_scale_int_ceil"
-              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
-underflows and without loss of precision.  @num must be non-negative and
-function returns G_MAXUINT64.  If the result is not exactly
-representable as an integer, it is rounded up.  See also
-gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
-gst_util_uint64_scale(), gst_util_uint64_scale_round(),
-gst_util_uint64_scale_ceil().">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="val" transfer-ownership="none" doc="to scale.">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="num" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="denom" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_uint64_scale_int_round"
-              c:identifier="gst_util_uint64_scale_int_round"
-              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
-underflows and without loss of precision.  @num must be non-negative and
-function returns G_MAXUINT64.  If the result is not exactly
-representable as an integer, it is rounded to the nearest integer
-(half-way cases are rounded up).  See also gst_util_uint64_scale_int(),
-gst_util_uint64_scale_int_ceil(), gst_util_uint64_scale(),
-gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil().">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="val" transfer-ownership="none" doc="to scale.">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="num" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="denom" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="util_uint64_scale_round"
-              c:identifier="gst_util_uint64_scale_round"
-              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
-underflows and without loss of precision.
-This function can potentially be very slow if val and num are both
-greater than G_MAXUINT32.
-function returns G_MAXUINT64.  If the result is not exactly
-representable as an integer, it is rounded to the nearest integer
-(half-way cases are rounded up).  See also gst_util_uint64_scale(),
-gst_util_uint64_scale_ceil(), gst_util_uint64_scale_int(),
-gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil().">
-      <return-value transfer-ownership="none">
-        <type name="uint64" c:type="guint64"/>
-      </return-value>
-      <parameters>
-        <parameter name="val" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="num" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-        <parameter name="denom" transfer-ownership="none">
-          <type name="uint64" c:type="guint64"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_array_append_value"
-              c:identifier="gst_value_array_append_value"
-              doc="Appends @append_value to the GstValueArray in @value.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="append_value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_array_get_size"
-              c:identifier="gst_value_array_get_size"
-              doc="Gets the number of values contained in @value.">
-      <return-value transfer-ownership="none">
-        <type name="uint" c:type="guint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_array_get_value"
-              c:identifier="gst_value_array_get_value"
-              doc="Gets the value that is a member of the array contained in @value and
-has the index @index.">
-      <return-value transfer-ownership="none">
-        <type name="GObject.Value" c:type="GValue*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="index" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_array_prepend_value"
-              c:identifier="gst_value_array_prepend_value"
-              doc="Prepends @prepend_value to the GstValueArray in @value.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="prepend_value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_can_compare"
-              c:identifier="gst_value_can_compare"
-              doc="Determines if @value1 and @value2 can be compared.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_can_intersect"
-              c:identifier="gst_value_can_intersect"
-              doc="Determines if intersecting two values will produce a valid result.
-Two values will produce a valid intersection if they have the same
-type, or if there is a method (registered by
-gst_value_register_intersect_func()) to calculate the intersection.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_can_subtract"
-              c:identifier="gst_value_can_subtract"
-              doc="Checks if it&apos;s possible to subtract @subtrahend from @minuend.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="minuend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="subtrahend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_can_union"
-              c:identifier="gst_value_can_union"
-              doc="Determines if @value1 and @value2 can be non-trivially unioned.
-Any two values can be trivially unioned by adding both of them
-to a GstValueList.  However, certain types have the possibility
-to be unioned in a simpler way.  For example, an integer range
-and an integer can be unioned if the integer is a subset of the
-integer range.  If there is the possibility that two values can
-be unioned, this function returns TRUE.
-be unioned.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_compare"
-              c:identifier="gst_value_compare"
-              doc="Compares @value1 and @value2.  If @value1 and @value2 cannot be
-compared, the function returns GST_VALUE_UNORDERED.  Otherwise,
-if @value1 is greater than @value2, GST_VALUE_GREATER_THAN is returned.
-If @value1 is less than @value2, GST_VALUE_LESS_THAN is returned.
-If the values are equal, GST_VALUE_EQUAL is returned.">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_deserialize"
-              c:identifier="gst_value_deserialize"
-              doc="Tries to deserialize a string into the type specified by the given GValue.
-If the operation succeeds, TRUE is returned, FALSE otherwise.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="src" transfer-ownership="none">
-          <type name="utf8" c:type="gchar*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_dup_mini_object"
-              c:identifier="gst_value_dup_mini_object"
-              doc="Get the contents of a %GST_TYPE_MINI_OBJECT derived #GValue,
-increasing its reference count."
-              version="0.10.20">
-      <return-value transfer-ownership="full">
-        <type name="MiniObject" c:type="GstMiniObject*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_fraction_multiply"
-              c:identifier="gst_value_fraction_multiply"
-              doc="Multiplies the two #GValue items containing a #GST_TYPE_FRACTION and sets">
-      <return-value transfer-ownership="none" doc="TRUE otherwise.">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="product" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="factor1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="factor2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_fraction_subtract"
-              c:identifier="gst_value_fraction_subtract"
-              doc="Subtracts the @subtrahend from the @minuend and sets @dest to the result.">
-      <return-value transfer-ownership="none" doc="TRUE otherwise.">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="minuend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="subtrahend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_caps"
-              c:identifier="gst_value_get_caps"
-              doc="Gets the contents of @value.">
-      <return-value transfer-ownership="none">
-        <type name="Caps" c:type="GstCaps*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_date"
-              c:identifier="gst_value_get_date"
-              doc="Gets the contents of @value.">
-      <return-value transfer-ownership="none">
-        <type name="GLib.Date" c:type="GDate*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_double_range_max"
-              c:identifier="gst_value_get_double_range_max"
-              doc="Gets the maximum of the range specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="double" c:type="gdouble"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_double_range_min"
-              c:identifier="gst_value_get_double_range_min"
-              doc="Gets the minimum of the range specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="double" c:type="gdouble"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_fourcc"
-              c:identifier="gst_value_get_fourcc"
-              doc="Gets the #guint32 fourcc contained in @value.">
-      <return-value transfer-ownership="none">
-        <type name="uint32" c:type="guint32"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_fraction_denominator"
-              c:identifier="gst_value_get_fraction_denominator"
-              doc="Gets the denominator of the fraction specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_fraction_numerator"
-              c:identifier="gst_value_get_fraction_numerator"
-              doc="Gets the numerator of the fraction specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_fraction_range_max"
-              c:identifier="gst_value_get_fraction_range_max"
-              doc="Gets the maximum of the range specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="GObject.Value" c:type="GValue*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_fraction_range_min"
-              c:identifier="gst_value_get_fraction_range_min"
-              doc="Gets the minimum of the range specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="GObject.Value" c:type="GValue*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_int_range_max"
-              c:identifier="gst_value_get_int_range_max"
-              doc="Gets the maximum of the range specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_int_range_min"
-              c:identifier="gst_value_get_int_range_min"
-              doc="Gets the minimum of the range specified by @value.">
-      <return-value transfer-ownership="none">
-        <type name="int" c:type="gint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_mini_object"
-              c:identifier="gst_value_get_mini_object"
-              doc="Get the contents of a %GST_TYPE_MINI_OBJECT derived #GValue.
-Does not increase the refcount of the returned object.">
-      <return-value transfer-ownership="full">
-        <type name="MiniObject" c:type="GstMiniObject*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_get_structure"
-              c:identifier="gst_value_get_structure"
-              doc="Gets the contents of @value."
-              version="0.10.15">
-      <return-value transfer-ownership="none">
-        <type name="Structure" c:type="GstStructure*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_init_and_copy"
-              c:identifier="gst_value_init_and_copy"
-              doc="Initialises the target value to be of the same type as source and then copies
-the contents from source to target.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="src" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_intersect"
-              c:identifier="gst_value_intersect"
-              doc="intersection value
-Calculates the intersection of two values.  If the values have
-a non-empty intersection, the value representing the intersection
-is placed in @dest.  If the intersection is non-empty, @dest is
-not modified.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_is_fixed"
-              c:identifier="gst_value_is_fixed"
-              doc="Tests if the given GValue, if available in a GstStructure (or any other
-ranges) value.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_list_append_value"
-              c:identifier="gst_value_list_append_value"
-              doc="Appends @append_value to the GstValueList in @value.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="append_value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_list_concat"
-              c:identifier="gst_value_list_concat"
-              doc="Concatenates copies of @value1 and @value2 into a list.  Values that are not
-of type #GST_TYPE_LIST are treated as if they were lists of length 1.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_list_get_size"
-              c:identifier="gst_value_list_get_size"
-              doc="Gets the number of values contained in @value.">
-      <return-value transfer-ownership="none">
-        <type name="uint" c:type="guint"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_list_get_value"
-              c:identifier="gst_value_list_get_value"
-              doc="Gets the value that is a member of the list contained in @value and
-has the index @index.">
-      <return-value transfer-ownership="none">
-        <type name="GObject.Value" c:type="GValue*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="index" transfer-ownership="none">
-          <type name="uint" c:type="guint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_list_prepend_value"
-              c:identifier="gst_value_list_prepend_value"
-              doc="Prepends @prepend_value to the GstValueList in @value.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="prepend_value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_register"
-              c:identifier="gst_value_register"
-              doc="Registers functions to perform calculations on #GValue items of a given
-type. Each type can only be added once.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="table" transfer-ownership="none">
-          <type name="ValueTable" c:type="GstValueTable*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_register_intersect_func"
-              c:identifier="gst_value_register_intersect_func"
-              doc="Registers a function that is called to calculate the intersection
-of the values having the types @type1 and @type2.
-Intersect functions should be registered at startup before any pipelines are
-started, as gst_value_register_intersect_func() is not thread-safe and
-cannot be used at the same time as gst_value_intersect() or
-gst_value_can_intersect().">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="type1" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="type2" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="ValueIntersectFunc" c:type="GstValueIntersectFunc"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_register_subtract_func"
-              c:identifier="gst_value_register_subtract_func"
-              doc="Registers @func as a function capable of subtracting the values of
-Subtract functions should be registered at startup before any pipelines are
-started, as gst_value_register_subtract_func() is not thread-safe and
-cannot be used at the same time as gst_value_subtract().">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="minuend_type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="subtrahend_type" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="ValueSubtractFunc" c:type="GstValueSubtractFunc"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_register_union_func"
-              c:identifier="gst_value_register_union_func"
-              doc="Registers a union function that can create a union between #GValue items
-of the type @type1 and @type2.
-Union functions should be registered at startup before any pipelines are
-started, as gst_value_register_union_func() is not thread-safe and cannot
-be used at the same time as gst_value_union() or gst_value_can_union().">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="type1" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="type2" transfer-ownership="none">
-          <type name="GType" c:type="GType"/>
-        </parameter>
-        <parameter name="func" transfer-ownership="none" scope="call">
-          <type name="ValueUnionFunc" c:type="GstValueUnionFunc"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_serialize"
-              c:identifier="gst_value_serialize"
-              doc="tries to transform the given @value into a string representation that allows
-getting back this string later on using gst_value_deserialize().">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_caps"
-              c:identifier="gst_value_set_caps"
-              doc="Sets the contents of @value to @caps.  The actual
-#GstCaps structure is copied before it is used.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="caps" transfer-ownership="none">
-          <type name="Caps" c:type="GstCaps*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_date"
-              c:identifier="gst_value_set_date"
-              doc="Sets the contents of @value to coorespond to @date.  The actual
-#GDate structure is copied before it is used.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="date" transfer-ownership="none">
-          <type name="GLib.Date" c:type="GDate*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_double_range"
-              c:identifier="gst_value_set_double_range"
-              doc="Sets @value to the range specified by @start and @end.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="start" transfer-ownership="none">
-          <type name="double" c:type="gdouble"/>
-        </parameter>
-        <parameter name="end" transfer-ownership="none">
-          <type name="double" c:type="gdouble"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_fourcc"
-              c:identifier="gst_value_set_fourcc"
-              doc="Sets @value to @fourcc.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="fourcc" transfer-ownership="none">
-          <type name="uint32" c:type="guint32"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_fraction"
-              c:identifier="gst_value_set_fraction"
-              doc="Sets @value to the fraction specified by @numerator over @denominator.
-The fraction gets reduced to the smallest numerator and denominator,
-and if necessary the sign is moved to the numerator.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="numerator" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="denominator" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_fraction_range"
-              c:identifier="gst_value_set_fraction_range"
-              doc="Sets @value to the range specified by @start and @end.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="start" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="end" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_fraction_range_full"
-              c:identifier="gst_value_set_fraction_range_full"
-              doc="Sets @value to the range specified by @numerator_start/@denominator_start
-and @numerator_end/@denominator_end.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="numerator_start" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="denominator_start" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="numerator_end" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="denominator_end" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_int_range"
-              c:identifier="gst_value_set_int_range"
-              doc="Sets @value to the range specified by @start and @end.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="start" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-        <parameter name="end" transfer-ownership="none">
-          <type name="int" c:type="gint"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_mini_object"
-              c:identifier="gst_value_set_mini_object"
-              doc="Set the contents of a %GST_TYPE_MINI_OBJECT derived #GValue to
-The caller retains ownership of the reference.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="mini_object" transfer-ownership="none">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_set_structure"
-              c:identifier="gst_value_set_structure"
-              doc="Sets the contents of @value to @structure.  The actual"
-              version="0.10.15">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="structure" transfer-ownership="none">
-          <type name="Structure" c:type="GstStructure*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_subtract"
-              c:identifier="gst_value_subtract"
-              doc="Subtracts @subtrahend from @minuend and stores the result in @dest.
-Note that this means subtraction as in sets, not as in mathematics.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="minuend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="subtrahend" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_take_mini_object"
-              c:identifier="gst_value_take_mini_object"
-              doc="Set the contents of a %GST_TYPE_MINI_OBJECT derived #GValue to
-Takes over the ownership of the caller&apos;s reference to @mini_object;
-the caller doesn&apos;t have to unref it any more.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="value" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="mini_object" transfer-ownership="none">
-          <type name="MiniObject" c:type="GstMiniObject*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="value_union"
-              c:identifier="gst_value_union"
-              doc="Creates a GValue corresponding to the union of @value1 and @value2.">
-      <return-value transfer-ownership="none">
-        <type name="boolean" c:type="gboolean"/>
-      </return-value>
-      <parameters>
-        <parameter name="dest" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value1" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-        <parameter name="value2" transfer-ownership="none">
-          <type name="GObject.Value" c:type="GValue*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="version"
-              c:identifier="gst_version"
-              doc="Gets the version number of the GStreamer library.">
-      <return-value transfer-ownership="none">
-        <type name="none" c:type="void"/>
-      </return-value>
-      <parameters>
-        <parameter name="major" direction="out" transfer-ownership="full">
-          <type name="uint" c:type="guint*"/>
-        </parameter>
-        <parameter name="minor" direction="out" transfer-ownership="full">
-          <type name="uint" c:type="guint*"/>
-        </parameter>
-        <parameter name="micro" direction="out" transfer-ownership="full">
-          <type name="uint" c:type="guint*"/>
-        </parameter>
-        <parameter name="nano" direction="out" transfer-ownership="full">
-          <type name="uint" c:type="guint*"/>
-        </parameter>
-      </parameters>
-    </function>
-    <function name="version_string"
-              c:identifier="gst_version_string"
-              doc="This function returns a string that is useful for describing this version">
-      <return-value transfer-ownership="full">
-        <type name="utf8" c:type="gchar*"/>
-      </return-value>
-    </function>
-  </namespace>
-</repository>
diff --git a/basis/gst/authors.txt b/basis/gst/authors.txt
deleted file mode 100644 (file)
index ce9bcc8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Anton Gorenko
\ No newline at end of file
diff --git a/basis/gst/ffi/ffi.factor b/basis/gst/ffi/ffi.factor
deleted file mode 100644 (file)
index 0bb365a..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-! Copyright (C) 2010 Anton Gorenko.
-! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.syntax alien.libraries combinators kernel
-system
-gobject-introspection glib.ffi gmodule.ffi gobject.ffi ;
-EXCLUDE: alien.c-types => pointer ;
-IN: gst.ffi
-
-<<
-"gst" {
-    { [ os winnt? ] [ drop ] }
-    { [ os macosx? ] [ drop ] }
-    { [ os unix? ] [ "libgstreamer-0.10.so" cdecl add-library ] }
-} cond
->>
-
-TYPEDEF: gpointer GstClockID
-TYPEDEF: guint64 GstClockTime
-TYPEDEF: gint64 GstClockTimeDiff
-
-! types from libxml2
-TYPEDEF: void* xmlNodePtr
-TYPEDEF: void* xmlDocPtr
-TYPEDEF: void* xmlNsPtr
-
-GIR: vocab:gst/Gst-0.10.gir
-
diff --git a/basis/gst/gst.factor b/basis/gst/gst.factor
deleted file mode 100644 (file)
index 073b022..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-! Copyright (C) 2010 Anton Gorenko.
-! See http://factorcode.org/license.txt for BSD license.
-USING: gst.ffi ;
-IN: gst
-
diff --git a/basis/gst/summary.txt b/basis/gst/summary.txt
deleted file mode 100644 (file)
index 4094ff9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-GStreamer binding
diff --git a/basis/gst/tags.txt b/basis/gst/tags.txt
deleted file mode 100755 (executable)
index bb863cf..0000000
+++ /dev/null
@@ -1 +0,0 @@
-bindings
diff --git a/basis/gstreamer/Gst-0.10.gir b/basis/gstreamer/Gst-0.10.gir
new file mode 100644 (file)
index 0000000..d187fe1
--- /dev/null
@@ -0,0 +1,22063 @@
+<?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.0"
+            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="GLib" version="2.0"/>
+  <include name="GModule" version="2.0"/>
+  <include name="GObject" version="2.0"/>
+  <include name="libxml2" version="2.0"/>
+  <package name="glib-2.0"/>
+  <package name="gmodule-no-export-2.0"/>
+  <package name="gobject-2.0"/>
+  <package name="gthread-2.0"/>
+  <package name="libxml-2.0"/>
+  <c:include name="gst/gst.h"/>
+  <namespace name="Gst"
+             version="0.10"
+             shared-library="libgstreamer-0.10.so.0"
+             c:prefix="Gst">
+    <alias name="ClockID" target="any" c:type="GstClockID"/>
+    <alias name="ClockTime" target="uint64" c:type="GstClockTime"/>
+    <alias name="ClockTimeDiff" target="int64" c:type="GstClockTimeDiff"/>
+    <enumeration name="ActivateMode"
+                 doc="The status of a GstPad. After activating a pad, which usually happens when the
+parent element goes from READY to PAUSED, the GstActivateMode defines if the
+pad operates in push or pull mode."
+                 c:type="GstActivateMode">
+      <member name="none" value="0" c:identifier="GST_ACTIVATE_NONE"/>
+      <member name="push" value="1" c:identifier="GST_ACTIVATE_PUSH"/>
+      <member name="pull" value="2" c:identifier="GST_ACTIVATE_PULL"/>
+    </enumeration>
+    <record name="AllocTrace"
+            c:type="GstAllocTrace"
+            doc="The main tracing object">
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="live" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="mem_live" writable="1">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <method name="print"
+              c:identifier="gst_alloc_trace_print"
+              doc="Print the status of the given GstAllocTrace.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_flags"
+              c:identifier="gst_alloc_trace_set_flags"
+              doc="Enable the given features on the given GstAllocTrace object.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AllocTraceFlags" c:type="GstAllocTraceFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="AllocTraceFlags"
+              doc="Flags indicating which tracing feature to enable."
+              c:type="GstAllocTraceFlags">
+      <member name="live" value="1" c:identifier="GST_ALLOC_TRACE_LIVE"/>
+      <member name="mem_live"
+              value="2"
+              c:identifier="GST_ALLOC_TRACE_MEM_LIVE"/>
+    </bitfield>
+    <bitfield name="AssocFlags"
+              doc="that marks a place where one can randomly seek to.
+is one that marks a place where one can relatively seek to.
+Flags for an association entry."
+              c:type="GstAssocFlags">
+      <member name="none" value="0" c:identifier="GST_ASSOCIATION_FLAG_NONE"/>
+      <member name="key_unit"
+              value="1"
+              c:identifier="GST_ASSOCIATION_FLAG_KEY_UNIT"/>
+      <member name="delta_unit"
+              value="2"
+              c:identifier="GST_ASSOCIATION_FLAG_DELTA_UNIT"/>
+      <member name="last"
+              value="256"
+              c:identifier="GST_ASSOCIATION_FLAG_LAST"/>
+    </bitfield>
+    <constant name="BUFFER_COPY_ALL" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="BUFFER_OFFSET_NONE" value="-1">
+      <type name="int"/>
+    </constant>
+    <constant name="BUFFER_TRACE_NAME" value="GstBuffer">
+      <type name="utf8"/>
+    </constant>
+    <class name="Bin"
+           c:type="GstBin"
+           doc="The GstBin base class. Subclasses can access these fields provided
+the LOCK is taken."
+           parent="Element"
+           glib:type-name="GstBin"
+           glib:get-type="gst_bin_get_type"
+           glib:type-struct="BinClass">
+      <implements name="ChildProxy"/>
+      <constructor name="new"
+                   c:identifier="gst_bin_new"
+                   doc="Creates a new bin with the given name.">
+        <return-value transfer-ownership="full">
+          <type name="Bin" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="add_element">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_element">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="handle_message">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add"
+              c:identifier="gst_bin_add"
+              doc="Adds the given element to the bin.  Sets the element&apos;s parent, and thus
+takes ownership of the element. An element can only be added to one bin.
+If the element&apos;s pads are linked to other pads, the pads will be unlinked
+before the element is added to the bin.
+MT safe.
+the bin does not want to accept the element.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="gst_bin_remove"
+              doc="Removes the element from the bin, unparenting it as well.
+Unparenting the element means that the element will be dereferenced,
+so if the bin holds the only reference to the element, the element
+will be freed in the process of removing it from the bin.  If you
+want the element to still exist after removing, you need to call
+gst_object_ref() before removing it from the bin.
+If the element&apos;s pads are linked to other pads, the pads will be unlinked
+before the element is removed from the bin.
+MT safe.
+the bin does not want to remove the element.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_by_name"
+              c:identifier="gst_bin_get_by_name"
+              doc="Gets the element with the given name from a bin. This
+function recurses into child bins.
+Returns NULL if no element with the given name is found in the bin.
+MT safe.  Caller owns returned reference.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_by_name_recurse_up"
+              c:identifier="gst_bin_get_by_name_recurse_up"
+              doc="Gets the element with the given name from this bin. If the
+element is not found, a recursion is performed on the parent bin.
+Returns NULL if:
+- no element with the given name is found in the bin
+MT safe.  Caller owns returned reference.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_by_interface"
+              c:identifier="gst_bin_get_by_interface"
+              doc="Looks for an element inside the bin that implements the given
+interface. If such an element is found, it returns the element.
+You can cast this element to the given interface afterwards.  If you want
+all elements that implement the interface, use
+gst_bin_iterate_all_by_interface(). This function recurses into child bins.
+MT safe.  Caller owns returned reference.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_elements"
+              c:identifier="gst_bin_iterate_elements"
+              doc="Gets an iterator for the elements in this bin.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sorted"
+              c:identifier="gst_bin_iterate_sorted"
+              doc="Gets an iterator for the elements in this bin in topologically
+sorted order. This means that the elements are returned from
+the most downstream elements (sinks) to the sources.
+This function is used internally to perform the state changes
+of the bin elements and for clock selection.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_recurse"
+              c:identifier="gst_bin_iterate_recurse"
+              doc="Gets an iterator for the elements in this bin.
+This iterator recurses into GstBin children.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sinks"
+              c:identifier="gst_bin_iterate_sinks"
+              doc="Gets an iterator for all elements in the bin that have the
+#GST_ELEMENT_IS_SINK flag set.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sources"
+              c:identifier="gst_bin_iterate_sources"
+              doc="Gets an iterator for all elements in the bin that have no sinkpads and have
+the #GST_ELEMENT_IS_SINK flag unset.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_all_by_interface"
+              c:identifier="gst_bin_iterate_all_by_interface"
+              doc="Looks for all elements inside the bin that implements the given
+interface. You can safely cast all returned elements to the given interface.
+The function recurses inside child bins. The iterator will yield a series
+of #GstElement that should be unreffed after use.
+Each element yielded by the iterator will have its refcount increased, so
+unref after use.
+MT safe.  Caller owns returned value.
+implementing the given interface, or NULL">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="recalculate_latency"
+              c:identifier="gst_bin_recalculate_latency"
+              doc="Query @bin for the current latency using and reconfigures this latency to all the
+elements with a LATENCY event.
+This method is typically called on the pipeline when a #GST_MESSAGE_LATENCY
+is posted on the bus.
+This function simply emits the &apos;do-latency&apos; signal so any custom latency
+calculations will be performed."
+              version="0.10.22.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add_many"
+              c:identifier="gst_bin_add_many"
+              doc="Adds a NULL-terminated list of elements to a bin.  This function is
+equivalent to calling gst_bin_add() for each member of the list. The return
+value of each gst_bin_add() is ignored.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_1" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_many"
+              c:identifier="gst_bin_remove_many"
+              doc="Remove a list of elements from a bin. This function is equivalent
+to calling gst_bin_remove() with each member of the list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_1" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_unlinked_pad"
+              c:identifier="gst_bin_find_unlinked_pad"
+              doc="Recursively looks for elements with an unlinked pad of the given
+direction within the specified bin and returns an unlinked pad
+if one is found, or NULL otherwise. If a pad is found, the caller
+owns a reference to it and should use gst_object_unref() on the
+pad when it is not needed any longer."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_unconnected_pad"
+              c:identifier="gst_bin_find_unconnected_pad"
+              doc="Recursively looks for elements with an unlinked pad of the given
+direction within the specified bin and returns an unlinked pad
+if one is found, or NULL otherwise. If a pad is found, the caller
+owns a reference to it and should use gst_object_unref() on the
+pad when it is not needed any longer."
+              version="0.10.3"
+              deprecated="use gst_bin_find_unlinked_pad() instead.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="async-handling" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="element">
+        <type name="Element" c:type="GstElement"/>
+      </field>
+      <field name="numchildren">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="children_cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="child_bus">
+        <type name="Bus" c:type="GstBus*"/>
+      </field>
+      <field name="messages">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="polling">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="state_dirty">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="clock_dirty">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="provided_clock">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="clock_provider">
+        <type name="Element" c:type="GstElement*"/>
+      </field>
+      <field name="priv">
+        <type name="BinPrivate" c:type="GstBinPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="do-latency"
+                   doc="Will be emitted when the bin needs to perform latency calculations. This
+signal is only emited for toplevel bins or when async-handling is
+enabled.
+Only one signal handler is invoked. If no signals are connected, the
+default handler is invoked, which will query and distribute the lowest
+possible latency to all sinks.
+Connect to this signal if the default latency calculations are not
+sufficient, like when you need different latencies for different sinks in
+the same pipeline."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="element-added"
+                   doc="Will be emitted after the element was added to the bin.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="element-removed"
+                   doc="Will be emitted after the element was removed from the bin.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BinClass"
+            c:type="GstBinClass"
+            glib:is-gtype-struct-for="Bin"
+            doc="Subclasses can override the @add_element and @remove_element to
+update the list of children in the bin.
+The @handle_message method can be overridden to implement custom
+message handling.  @handle_message takes ownership of the message, just like
+#gst_element_post_message.">
+      <field name="parent_class">
+        <type name="ElementClass" c:type="GstElementClass"/>
+      </field>
+      <field name="pool">
+        <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
+      </field>
+      <field name="element_added">
+        <callback name="element_added" c:type="element_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="element_removed">
+        <callback name="element_removed" c:type="element_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_element">
+        <callback name="add_element" c:type="add_element">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_element">
+        <callback name="remove_element" c:type="remove_element">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="handle_message">
+        <callback name="handle_message" c:type="handle_message">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="Message" c:type="GstMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="do_latency">
+        <callback name="do_latency" c:type="do_latency">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="bin" transfer-ownership="none">
+              <type name="Bin" c:type="GstBin*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="BinFlags"
+              doc="Derived classes can use this as first value in a list of flags.
+GstBinFlags are a set of flags specific to bins. Most are set/used
+internally. They can be checked using the GST_OBJECT_FLAG_IS_SET () macro,
+and (un)set using GST_OBJECT_FLAG_SET () and GST_OBJECT_FLAG_UNSET ()."
+              c:type="GstBinFlags">
+      <member name="bin_flag_last"
+              value="33554432"
+              c:identifier="GST_BIN_FLAG_LAST"/>
+    </bitfield>
+    <record name="BinPrivate" c:type="GstBinPrivate">
+    </record>
+    <record name="Buffer"
+            c:type="GstBuffer"
+            doc="timestamp is not known or relevant.
+when the duration is not known or relevant.
+For video frames, this is the frame number of this buffer.
+For audio samples, this is the offset of the first sample in this buffer.
+For file data or compressed data this is the byte offset of the first
+byte in this buffer.
+format as @offset.
+When the buffer is freed, this data will freed with @free_func.
+to g_free(). Since 0.10.22.
+The structure of a #GstBuffer. Use the associated macros to access the public
+variables.">
+      <field name="mini_object" writable="1">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="timestamp" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="duration" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="caps" writable="1">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="offset" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="offset_end" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="malloc_data" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <field name="free_func" writable="1">
+        <type name="GLib.FreeFunc" c:type="GFreeFunc"/>
+      </field>
+      <field name="parent" writable="1">
+        <type name="Buffer" c:type="GstBuffer*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_buffer_new"
+                   doc="Creates a newly allocated buffer without any data.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_and_alloc"
+                   c:identifier="gst_buffer_new_and_alloc"
+                   doc="Creates a newly allocated buffer with data of the given size.
+The buffer memory is not cleared. If the requested amount of
+memory can&apos;t be allocated, the program will abort. Use
+gst_buffer_try_new_and_alloc() if you want to handle this case
+gracefully or have gotten the size to allocate from an untrusted
+source such as a media stream.
+Note that when @size == 0, the buffer data pointer will be NULL.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy_metadata"
+              c:identifier="gst_buffer_copy_metadata"
+              doc="Copies the metadata from @src into @dest. The data, size and mallocdata
+fields are not copied.
+all the metadata fields.
+This function is typically called from a custom buffer copy function after
+creating @dest and setting the data, size, mallocdata."
+              version="0.10.13">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="BufferCopyFlags" c:type="GstBufferCopyFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_metadata_writable"
+              c:identifier="gst_buffer_is_metadata_writable"
+              doc="Similar to gst_buffer_is_writable, but this only ensures that the
+refcount of the buffer is 1, indicating that the caller is the sole
+owner and can change the buffer metadata, such as caps and timestamps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="make_metadata_writable"
+              c:identifier="gst_buffer_make_metadata_writable"
+              doc="Similar to gst_buffer_make_writable, but does not ensure that the buffer
+data array is writable. Instead, this just ensures that the returned buffer
+is solely owned by the caller, by creating a subbuffer of the original
+buffer if necessary.
+After calling this function, @buf should not be referenced anymore. The
+result of this function has guaranteed writable metadata.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_buffer_get_caps"
+              doc="Gets the media type of the buffer. This can be NULL if there
+is no media type attached to this buffer.
+Returns NULL if there were no caps on this buffer.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="set_caps"
+              c:identifier="gst_buffer_set_caps"
+              doc="Sets the media type on the buffer. The refcount of the caps will
+be increased and any previous caps on the buffer will be
+unreffed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_sub"
+              c:identifier="gst_buffer_create_sub"
+              doc="begins.
+Creates a sub-buffer from @parent at @offset and @size.
+This sub-buffer uses the actual memory space of the parent buffer.
+This function will copy the offset and timestamp fields when the
+offset is 0. If not, they will be set to #GST_CLOCK_TIME_NONE and
+#GST_BUFFER_OFFSET_NONE.
+If @offset equals 0 and @size equals the total size of @buffer, the
+duration and offset end fields are also copied. If not they will be set
+to #GST_CLOCK_TIME_NONE and #GST_BUFFER_OFFSET_NONE.
+MT safe.
+Returns NULL if the arguments were invalid.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_span_fast"
+              c:identifier="gst_buffer_is_span_fast"
+              doc="Determines whether a gst_buffer_span() can be done without copying
+the contents, that is, whether the data areas are contiguous sub-buffers of
+the same buffer.
+MT safe.
+FALSE if a copy would be required.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf2" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="span"
+              c:identifier="gst_buffer_span"
+              doc="buffer should start.
+Creates a new buffer that consists of part of buf1 and buf2.
+Logically, buf1 and buf2 are concatenated into a single larger
+buffer, and a new buffer is created at the given offset inside
+this space, with a given length.
+If the two source buffers are children of the same larger buffer,
+and are contiguous, the new buffer will be a child of the shared
+parent, and thus no copying is necessary. you can use
+gst_buffer_is_span_fast() to determine if a memcpy will be needed.
+MT safe.
+Returns NULL if the arguments are invalid.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="buf2" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge"
+              c:identifier="gst_buffer_merge"
+              doc="Create a new buffer that is the concatenation of the two source
+buffers.  The original source buffers will not be modified or
+unref&apos;d.  Make sure you unref the source buffers if they are not used
+anymore afterwards.
+If the buffers point to contiguous areas of memory, the buffer
+is created without copying the data.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf2" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="join"
+              c:identifier="gst_buffer_join"
+              doc="Create a new buffer that is the concatenation of the two source
+buffers, and unrefs the original source buffers.
+If the buffers point to contiguous areas of memory, the buffer
+is created without copying the data.
+This is a convenience function for C programmers. See also
+gst_buffer_merge(), which does the same thing without
+unreffing the input parameters. Language bindings without
+explicit reference counting should not wrap this function.">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf2" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stamp"
+              c:identifier="gst_buffer_stamp"
+              doc="Copies additional information (the timestamp, duration, and offset start
+and end) from one buffer to the other.
+This function does not copy any buffer flags or caps and is equivalent to
+gst_buffer_copy_metadata(@dest, @src, GST_BUFFER_COPY_TIMESTAMPS).
+control."
+              deprecated="use gst_buffer_copy_metadata() instead, it provides more">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="BufferClass" c:type="GstBufferClass">
+      <field name="mini_object_class" writable="1">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+    </record>
+    <bitfield name="BufferCopyFlags"
+              doc="offset and offset_end should be copied
+A set of flags that can be provided to the gst_buffer_copy_metadata()
+function to specify which metadata fields should be copied."
+              version="0.10.13"
+              c:type="GstBufferCopyFlags">
+      <member name="flags" value="1" c:identifier="GST_BUFFER_COPY_FLAGS"/>
+      <member name="timestamps"
+              value="2"
+              c:identifier="GST_BUFFER_COPY_TIMESTAMPS"/>
+      <member name="caps" value="4" c:identifier="GST_BUFFER_COPY_CAPS"/>
+    </bitfield>
+    <bitfield name="BufferFlag"
+              doc="the buffer should not be modified. The metadata might still be modified.
+displayed.
+This typically occurs after a seek or a dropped buffer from a live or
+network source.
+stream and contains media neutral data (elements can switch to optimized code
+path that ignores the buffer content).
+A set of buffer flags used to describe properties of a #GstBuffer."
+              c:type="GstBufferFlag">
+      <member name="readonly"
+              value="1"
+              c:identifier="GST_BUFFER_FLAG_READONLY"/>
+      <member name="preroll"
+              value="16"
+              c:identifier="GST_BUFFER_FLAG_PREROLL"/>
+      <member name="discont"
+              value="32"
+              c:identifier="GST_BUFFER_FLAG_DISCONT"/>
+      <member name="in_caps"
+              value="64"
+              c:identifier="GST_BUFFER_FLAG_IN_CAPS"/>
+      <member name="gap" value="128" c:identifier="GST_BUFFER_FLAG_GAP"/>
+      <member name="delta_unit"
+              value="256"
+              c:identifier="GST_BUFFER_FLAG_DELTA_UNIT"/>
+      <member name="media1" value="512" c:identifier="GST_BUFFER_FLAG_MEDIA1"/>
+      <member name="media2"
+              value="1024"
+              c:identifier="GST_BUFFER_FLAG_MEDIA2"/>
+      <member name="media3"
+              value="2048"
+              c:identifier="GST_BUFFER_FLAG_MEDIA3"/>
+      <member name="last" value="4096" c:identifier="GST_BUFFER_FLAG_LAST"/>
+    </bitfield>
+    <record name="BufferList"
+            c:type="GstBufferList"
+            doc="Opaque list of grouped buffers."
+            version="0.10.24">
+      <constructor name="new"
+                   c:identifier="gst_buffer_list_new"
+                   doc="Creates a new, empty #GstBufferList. The caller is responsible for unreffing
+the returned #GstBufferList."
+                   version="0.10.24">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="BufferList" c:type="GstBufferList*"/>
+        </return-value>
+      </constructor>
+      <method name="n_groups"
+              c:identifier="gst_buffer_list_n_groups"
+              doc="Returns the number of groups in @list."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="foreach"
+              c:identifier="gst_buffer_list_foreach"
+              doc="Call @func with @data for each buffer in @list.
+of @func define if this function returns or if the remaining buffers in a
+group should be skipped."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BufferListFunc" c:type="GstBufferListFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get"
+              c:identifier="gst_buffer_list_get"
+              doc="Get the buffer at @idx in @group.
+Note that this function is not efficient for iterating over the entire list.
+Use an iterator or gst_buffer_list_foreach() instead.
+buffer remains valid as long as @list is valid."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate"
+              c:identifier="gst_buffer_list_iterate"
+              doc="Iterate the buffers in @list. The owner of the iterator must also be the
+owner of a reference to @list while the returned iterator is in use.
+gst_buffer_list_iterator_free() after usage"
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="BufferListIterator" c:type="GstBufferListIterator*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="BufferListClass" c:type="GstBufferListClass">
+    </record>
+    <callback name="BufferListDoFunction"
+              c:type="GstBufferListDoFunction"
+              doc="A function for accessing the last buffer returned by
+gst_buffer_list_iterator_next(). The function can leave @buffer in the list,
+replace @buffer in the list or remove @buffer from the list, depending on
+the return value. If the function returns NULL, @buffer will be removed from
+the list, otherwise @buffer will be replaced with the returned buffer.
+The last buffer returned by gst_buffer_list_iterator_next() will be replaced
+with the buffer returned from the function. The function takes ownership of
+unreffed. If NULL is returned, the buffer will be removed from the list. The
+list must be writable.
+from the list"
+              version="0.10.24">
+      <return-value transfer-ownership="full">
+        <type name="Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BufferListFunc"
+              c:type="GstBufferListFunc"
+              doc="A function that will be called from gst_buffer_list_foreach(). The @buffer
+field will point to a the reference of the buffer at @idx in @group.
+When this function returns #GST_BUFFER_LIST_CONTINUE, the next buffer will be
+returned. When #GST_BUFFER_LIST_SKIP_GROUP is returned, all remaining buffers
+in the current group will be skipped and the first buffer of the next group
+is returned (if any). When GST_BUFFER_LIST_END is returned,
+gst_buffer_list_foreach() will return.
+When @buffer is set to NULL, the item will be removed from the bufferlist.
+When @buffer has been made writable, the new buffer reference can be assigned
+to @buffer. This function is responsible for unreffing the old buffer when
+removing or modifying."
+              version="0.10.24">
+      <return-value transfer-ownership="full">
+        <type name="BufferListItem" c:type="GstBufferListItem"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer**"/>
+        </parameter>
+        <parameter name="group" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="idx" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="BufferListItem"
+                 doc="The result of the #GstBufferListFunc."
+                 version="0.10.24"
+                 c:type="GstBufferListItem">
+      <member name="continue"
+              value="0"
+              c:identifier="GST_BUFFER_LIST_CONTINUE"/>
+      <member name="skip_group"
+              value="1"
+              c:identifier="GST_BUFFER_LIST_SKIP_GROUP"/>
+      <member name="end" value="2" c:identifier="GST_BUFFER_LIST_END"/>
+    </enumeration>
+    <record name="BufferListIterator"
+            c:type="GstBufferListIterator"
+            doc="Opaque iterator for a #GstBufferList."
+            version="0.10.24">
+      <method name="free"
+              c:identifier="gst_buffer_list_iterator_free"
+              doc="Free the iterator."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="n_buffers"
+              c:identifier="gst_buffer_list_iterator_n_buffers"
+              doc="Returns the number of buffers left to iterate in the current group. I.e. the
+number of calls that can be made to gst_buffer_list_iterator_next() before
+it returns NULL.
+This function will not move the implicit cursor or in any other way affect
+the state of the iterator @it."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="next"
+              c:identifier="gst_buffer_list_iterator_next"
+              doc="Returns the next buffer in the list iterated with @it. If the iterator is at
+the end of a group, NULL will be returned. This function may be called
+repeatedly to iterate through the current group.
+The caller will not get a new ref to the returned #GstBuffer and must not
+unref it."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="next_group"
+              c:identifier="gst_buffer_list_iterator_next_group"
+              doc="Advance the iterator @it to the first buffer in the next group. If the
+iterator is at the last group, FALSE will be returned. This function may be
+called repeatedly to iterate through the groups in a buffer list.
+the iterator was already at the last group"
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add"
+              c:identifier="gst_buffer_list_iterator_add"
+              doc="Inserts @buffer into the #GstBufferList iterated with @it. The buffer is
+inserted into the current group, immediately before the buffer that would be
+returned by gst_buffer_list_iterator_next(). The buffer is inserted before
+the implicit cursor, a subsequent call to gst_buffer_list_iterator_next()
+will return the buffer after the inserted buffer, if any.
+This function takes ownership of @buffer."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_group"
+              c:identifier="gst_buffer_list_iterator_add_group"
+              doc="Inserts a new, empty group into the #GstBufferList iterated with @it. The
+group is inserted immediately before the group that would be returned by
+gst_buffer_list_iterator_next_group(). A subsequent call to
+gst_buffer_list_iterator_next_group() will advance the iterator to the group
+after the inserted group, if any."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove"
+              c:identifier="gst_buffer_list_iterator_remove"
+              doc="Removes the last buffer returned by gst_buffer_list_iterator_next() from
+the #GstBufferList iterated with @it. gst_buffer_list_iterator_next() must
+have been called on @it before this function is called. This function can
+only be called once per call to gst_buffer_list_iterator_next().
+The removed buffer is unreffed."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="steal"
+              c:identifier="gst_buffer_list_iterator_steal"
+              doc="Returns the last buffer returned by gst_buffer_list_iterator_next() without
+modifying the refcount of the buffer."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+      <method name="take"
+              c:identifier="gst_buffer_list_iterator_take"
+              doc="Replaces the last buffer returned by gst_buffer_list_iterator_next() with
+this function is called. gst_buffer_list_iterator_remove() must not have been
+called since the last call to gst_buffer_list_iterator_next().
+This function unrefs the replaced buffer if it has not been stolen with
+gst_buffer_list_iterator_steal() and takes ownership of @buffer (i.e. the
+refcount of @buffer is not increased)."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="do"
+              c:identifier="gst_buffer_list_iterator_do"
+              doc="Calls the given function for the last buffer returned by
+gst_buffer_list_iterator_next(). gst_buffer_list_iterator_next() must have
+been called on @it before this function is called.
+gst_buffer_list_iterator_remove() and gst_buffer_list_iterator_steal() must
+not have been called since the last call to gst_buffer_list_iterator_next().
+See #GstBufferListDoFunction for more details."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BufferListDoFunction"
+                  c:type="GstBufferListDoFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge_group"
+              c:identifier="gst_buffer_list_iterator_merge_group"
+              doc="Merge a buffer list group into a normal #GstBuffer by copying its metadata
+and memcpying its data into consecutive memory. All buffers in the current
+group after the implicit cursor will be merged into one new buffer. The
+metadata of the new buffer will be a copy of the metadata of the buffer that
+would be returned by gst_buffer_list_iterator_next(). If there is no buffer
+in the current group after the implicit cursor, NULL will be returned.
+This function will not move the implicit cursor or in any other way affect
+the state of the iterator @it or the list."
+              version="0.10.24">
+        <return-value transfer-ownership="full" doc="after usage, or NULL">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="BufferingMode"
+                 doc="The different types of buffering methods."
+                 c:type="GstBufferingMode">
+      <member name="stream" value="0" c:identifier="GST_BUFFERING_STREAM"/>
+      <member name="download" value="1" c:identifier="GST_BUFFERING_DOWNLOAD"/>
+      <member name="timeshift"
+              value="2"
+              c:identifier="GST_BUFFERING_TIMESHIFT"/>
+      <member name="live" value="3" c:identifier="GST_BUFFERING_LIVE"/>
+    </enumeration>
+    <class name="Bus"
+           c:type="GstBus"
+           doc="The opaque #GstBus data structure."
+           parent="Object"
+           glib:type-name="GstBus"
+           glib:get-type="gst_bus_get_type"
+           glib:type-struct="BusClass">
+      <constructor name="new"
+                   c:identifier="gst_bus_new"
+                   doc="Creates a new #GstBus instance.">
+        <return-value transfer-ownership="full">
+          <type name="Bus" c:type="GstBus*"/>
+        </return-value>
+      </constructor>
+      <method name="post"
+              c:identifier="gst_bus_post"
+              doc="Post a message on the given bus. Ownership of the message
+is taken by the bus.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="have_pending"
+              c:identifier="gst_bus_have_pending"
+              doc="Check if there are pending messages on the bus that
+should be handled.
+otherwise.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="peek"
+              c:identifier="gst_bus_peek"
+              doc="Peek the message on the top of the bus&apos; queue. The message will remain
+on the bus&apos; message queue. A reference is returned, and needs to be unreffed
+by the caller.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+      </method>
+      <method name="pop"
+              c:identifier="gst_bus_pop"
+              doc="Get a message from the bus.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+      </method>
+      <method name="pop_filtered"
+              c:identifier="gst_bus_pop_filtered"
+              doc="Get a message matching @type from the bus.  Will discard all messages on
+the bus that do not match @type and that have been posted before the first
+message that does match @type.  If there is no message matching @type on
+the bus, all messages will be discarded.
+the bus is empty or there is no message matching @type.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe."
+              version="0.10.15">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="types" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="timed_pop"
+              c:identifier="gst_bus_timed_pop"
+              doc="Get a message from the bus, waiting up to the specified timeout.
+If @timeout is 0, this function behaves like gst_bus_pop(). If @timeout is
+#GST_CLOCK_TIME_NONE, this function will block forever until a message was
+posted on the bus.
+or NULL if the bus is empty after the timeout expired.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe."
+              version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="timed_pop_filtered"
+              c:identifier="gst_bus_timed_pop_filtered"
+              doc="Get a message from the bus whose type matches the message type mask @types,
+waiting up to the specified timeout (and discarding any messages that do not
+match the mask provided).
+If @timeout is 0, this function behaves like gst_bus_pop_filtered(). If
+matching message was posted on the bus.
+message was found on the bus until the timeout expired.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.
+MT safe."
+              version="0.10.15">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="types" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_bus_set_flushing"
+              doc="If @flushing, flush out and unref any messages queued in the bus. Releases
+references to the message origin objects. Will flush future messages until
+gst_bus_set_flushing() sets @flushing to #FALSE.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sync_handler"
+              c:identifier="gst_bus_set_sync_handler"
+              doc="Sets the synchronous handler on the bus. The function will be called
+every time a new message is posted on the bus. Note that the function
+will be called in the same thread context as the posting object. This
+function is usually only called by the creator of the bus. Applications
+should handle messages asynchronously using the gst_bus watch and poll
+functions.
+You cannot replace an existing sync_handler. You can pass NULL to this
+function, which will clear the existing handler.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_watch"
+              c:identifier="gst_bus_create_watch"
+              doc="Create watch for this bus. The GSource will be dispatched whenever
+a message is on the bus. After the GSource is dispatched, the
+message is popped off the bus and unreffed.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Source" c:type="GSource*"/>
+        </return-value>
+      </method>
+      <method name="add_watch_full"
+              c:identifier="gst_bus_add_watch_full"
+              doc="Adds a bus watch to the default main context with the given @priority.
+This function is used to receive asynchronous messages in the main loop.
+There can only be a single bus watch per bus, you must remove it before you
+can set a new one.
+When @func is called, the message belongs to the caller; if you want to
+keep a copy of it, call gst_message_ref() before leaving @func.
+The watch can be removed using g_source_remove() or by returning FALSE
+from @func.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="BusFunc" c:type="GstBusFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_watch"
+              c:identifier="gst_bus_add_watch"
+              doc="Adds a bus watch to the default main context with the default priority.
+This function is used to receive asynchronous messages in the main loop.
+There can only be a single bus watch per bus, you must remove it before you
+can set a new one.
+The watch can be removed using g_source_remove() or by returning FALSE
+from @func.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="BusFunc" c:type="GstBusFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="poll"
+              c:identifier="gst_bus_poll"
+              doc="poll for.
+indefinitely.
+Poll the bus for messages. Will block while waiting for messages to come.
+You can specify a maximum time to poll with the @timeout parameter. If
+All messages not in @events will be popped off the bus and will be ignored.
+Because poll is implemented using the &quot;message&quot; signal enabled by
+gst_bus_add_signal_watch(), calling gst_bus_poll() will cause the &quot;message&quot;
+signal to be emitted for every message that poll sees. Thus a &quot;message&quot;
+signal handler will see the same messages that this function sees -- neither
+will steal messages from the other.
+This function will run a main loop from the default main context when
+polling.
+You should never use this function, since it is pure evil. This is
+especially true for GUI applications based on Gtk+ or Qt, but also for any
+other non-trivial application that uses the GLib main loop. As this function
+runs a GLib main loop, any callback attached to the default GLib main
+context may be invoked. This could be timeouts, GUI events, I/O events etc.;
+even if gst_bus_poll() is called with a 0 timeout. Any of these callbacks
+may do things you do not expect, e.g. destroy the main application window or
+some other resource; change other application state; display a dialog and
+run another main loop until the user clicks it away. In short, using this
+function may add a lot of complexity to your code through unexpected
+re-entrancy and unexpected changes to your application&apos;s state.
+For 0 timeouts use gst_bus_pop_filtered() instead of this function; for
+other short timeouts use gst_bus_timed_pop_filtered(); everything else is
+better handled by setting up an asynchronous bus watch and doing things
+from there.
+The message is taken from the bus and needs to be unreffed with
+gst_message_unref() after usage.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="events" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="async_signal_func"
+              c:identifier="gst_bus_async_signal_func"
+              doc="A helper #GstBusFunc that can be used to convert all asynchronous messages
+into signals.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sync_signal_handler"
+              c:identifier="gst_bus_sync_signal_handler"
+              doc="A helper GstBusSyncHandler that can be used to convert all synchronous
+messages into signals.">
+        <return-value transfer-ownership="full">
+          <type name="BusSyncReply" c:type="GstBusSyncReply"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_signal_watch"
+              c:identifier="gst_bus_add_signal_watch"
+              doc="Adds a bus signal watch to the default main context with the default
+priority.
+After calling this statement, the bus will emit the &quot;message&quot; signal for each
+message posted on the bus.
+This function may be called multiple times. To clean up, the caller is
+responsible for calling gst_bus_remove_signal_watch() as many times as this
+function is called.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_signal_watch_full"
+              c:identifier="gst_bus_add_signal_watch_full"
+              doc="Adds a bus signal watch to the default main context with the given priority.
+After calling this statement, the bus will emit the &quot;message&quot; signal for each
+message posted on the bus when the main loop is running.
+This function may be called multiple times. To clean up, the caller is
+responsible for calling gst_bus_remove_signal_watch() as many times as this
+function is called.
+There can only be a single bus watch per bus, you most remove all signal watch
+before you can set another type of watch.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_signal_watch"
+              c:identifier="gst_bus_remove_signal_watch"
+              doc="Removes a signal watch previously added with gst_bus_add_signal_watch().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="enable_sync_message_emission"
+              c:identifier="gst_bus_enable_sync_message_emission"
+              doc="Instructs GStreamer to emit the &quot;sync-message&quot; signal after running the bus&apos;s
+sync handler. This function is here so that code can ensure that they can
+synchronously receive messages without having to affect what the bin&apos;s sync
+handler is.
+This function may be called multiple times. To clean up, the caller is
+responsible for calling gst_bus_disable_sync_message_emission() as many times
+as this function is called.
+While this function looks similar to gst_bus_add_signal_watch(), it is not
+exactly the same -- this function enables &lt;emphasis&gt;synchronous&lt;/emphasis&gt; emission of
+signals when messages arrive; gst_bus_add_signal_watch() adds an idle callback
+to pop messages off the bus &lt;emphasis&gt;asynchronously&lt;/emphasis&gt;. The sync-message signal
+comes from the thread of whatever object posted the message; the &quot;message&quot;
+signal is marshalled to the main thread via the main loop.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="disable_sync_message_emission"
+              c:identifier="gst_bus_disable_sync_message_emission"
+              doc="gst_bus_enable_sync_message_emission()
+Instructs GStreamer to stop emitting the &quot;sync-message&quot; signal for this bus.
+See gst_bus_enable_sync_message_emission() for more information.
+In the event that multiple pieces of code have called
+gst_bus_enable_sync_message_emission(), the sync-message emissions will only
+be stopped after all calls to gst_bus_enable_sync_message_emission() were
+&quot;cancelled&quot; by calling this function. In this way the semantics are exactly
+the same as gst_object_ref() that which calls enable should also call
+disable.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="queue">
+        <type name="GLib.Queue" c:type="GQueue*"/>
+      </field>
+      <field name="queue_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="sync_handler">
+        <type name="BusSyncHandler" c:type="GstBusSyncHandler"/>
+      </field>
+      <field name="sync_handler_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="signal_watch_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="num_signal_watchers">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="priv">
+        <type name="BusPrivate" c:type="GstBusPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="message"
+                   doc="A message has been posted on the bus. This signal is emitted from a
+GSource added to the mainloop. this signal will only be emitted when
+there is a mainloop running.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="sync-message"
+                   doc="A message has been posted on the bus. This signal is emitted from the
+thread that posted the message so one has to be careful with locking.
+This signal will not be emitted by default, you have to set up
+gst_bus_sync_signal_handler() as a sync handler if you want this
+signal to be emitted when a message is posted on the bus, like this:
+&lt;programlisting&gt;
+gst_bus_set_sync_handler (bus, gst_bus_sync_signal_handler, yourdata);
+&lt;/programlisting&gt;">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="BusClass"
+            c:type="GstBusClass"
+            glib:is-gtype-struct-for="Bus">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="message">
+        <callback name="message" c:type="message">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bus" transfer-ownership="none">
+              <type name="Bus" c:type="GstBus*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="Message" c:type="GstMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sync_message">
+        <callback name="sync_message" c:type="sync_message">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="bus" transfer-ownership="none">
+              <type name="Bus" c:type="GstBus*"/>
+            </parameter>
+            <parameter name="message" transfer-ownership="none">
+              <type name="Message" c:type="GstMessage*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="BusFlags"
+              doc="The standard flags that a bus may have."
+              c:type="GstBusFlags">
+      <member name="flushing" value="16" c:identifier="GST_BUS_FLUSHING"/>
+      <member name="flag_last" value="32" c:identifier="GST_BUS_FLAG_LAST"/>
+    </bitfield>
+    <callback name="BusFunc"
+              c:type="GstBusFunc"
+              doc="Specifies the type of function passed to gst_bus_add_watch() or
+gst_bus_add_watch_full(), which is called from the mainloop when a message
+is available on the bus.
+The message passed to the function will be unreffed after execution of this
+function so it should not be freed in the function.
+Note that this function is used as a GSourceFunc which means that returning
+FALSE will remove the GSource from the mainloop.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus" transfer-ownership="none">
+          <type name="Bus" c:type="GstBus*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="BusPrivate" c:type="GstBusPrivate">
+    </record>
+    <callback name="BusSyncHandler"
+              c:type="GstBusSyncHandler"
+              doc="Handler will be invoked synchronously, when a new message has been injected
+into the bus. This function is mostly used internally. Only one sync handler
+can be attached to a given bus.
+If the handler returns GST_BUS_DROP, it should unref the message, else the
+message should not be unreffed by the sync handler.">
+      <return-value transfer-ownership="full">
+        <type name="BusSyncReply" c:type="GstBusSyncReply"/>
+      </return-value>
+      <parameters>
+        <parameter name="bus" transfer-ownership="none">
+          <type name="Bus" c:type="GstBus*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="Message" c:type="GstMessage*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="BusSyncReply"
+                 doc="The result values for a GstBusSyncHandler."
+                 c:type="GstBusSyncReply">
+      <member name="drop" value="0" c:identifier="GST_BUS_DROP"/>
+      <member name="pass" value="1" c:identifier="GST_BUS_PASS"/>
+      <member name="async" value="2" c:identifier="GST_BUS_ASYNC"/>
+    </enumeration>
+    <constant name="CAN_INLINE" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="CLOCK_ENTRY_TRACE_NAME" value="GstClockEntry">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CLOCK_TIME_NONE" value="-1">
+      <type name="int"/>
+    </constant>
+    <record name="Caps"
+            c:type="GstCaps"
+            doc="Object describing media types."
+            glib:type-name="GstCaps"
+            glib:get-type="gst_caps_get_type">
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="refcount" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="CapsFlags" c:type="GstCapsFlags"/>
+      </field>
+      <field name="structs" writable="1">
+        <type name="GLib.PtrArray" c:type="GPtrArray*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new_empty"
+                   c:identifier="gst_caps_new_empty"
+                   doc="Creates a new #GstCaps that is empty.  That is, the returned
+#GstCaps contains no media formats.
+Caller is responsible for unreffing the returned caps.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_any"
+                   c:identifier="gst_caps_new_any"
+                   doc="Creates a new #GstCaps that indicates that it is compatible with
+any media format.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_simple"
+                   c:identifier="gst_caps_new_simple"
+                   doc="Creates a new #GstCaps that contains one #GstStructure.  The
+structure is defined by the arguments, which have the same format
+as gst_structure_new().
+Caller is responsible for unreffing the returned caps.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="media_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="gst_caps_new_full"
+                   doc="Creates a new #GstCaps and adds all the structures listed as
+arguments.  The list must be NULL-terminated.  The structures
+are not copied; the returned #GstCaps owns the structures.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="struct1" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="ref"
+              c:identifier="gst_caps_ref"
+              doc="Add a reference to a #GstCaps object.
+From this point on, until the caller calls gst_caps_unref() or
+gst_caps_make_writable(), it is guaranteed that the caps object will not
+change. This means its structures won&apos;t change, etc. To use a #GstCaps
+object, you must always have a refcount on it -- either the one made
+implicitly by e.g. gst_caps_new_simple(), or via taking one explicitly with
+this function.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="gst_caps_copy"
+              doc="Creates a new #GstCaps as a copy of the old @caps. The new caps will have a
+refcount of 1, owned by the caller. The structures are copied as well.
+Note that this function is the semantic equivalent of a gst_caps_ref()
+followed by a gst_caps_make_writable(). If you only want to hold on to a
+reference to the data, you should use gst_caps_ref().
+When you are finished with the caps, call gst_caps_unref() on it.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="make_writable"
+              c:identifier="gst_caps_make_writable"
+              doc="Returns a writable copy of @caps.
+If there is only one reference count on @caps, the caller must be the owner,
+and so this function will return the caps object unchanged. If on the other
+hand there is more than one reference on the object, a new caps object will
+be returned. The caller&apos;s reference on @caps will be removed, and instead the
+caller will own a reference to the returned object.
+In short, this function unrefs the caps in the argument and refs the caps
+that it returns. Don&apos;t access the argument after calling this function. See">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gst_caps_unref"
+              doc="Unref a #GstCaps and and free all its structures and the
+structures&apos; values when the refcount reaches 0.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="append"
+              c:identifier="gst_caps_append"
+              doc="Appends the structures contained in @caps2 to @caps1. The structures in
+freed. If either caps is ANY, the resulting caps will be ANY.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge"
+              c:identifier="gst_caps_merge"
+              doc="Appends the structures contained in @caps2 to @caps1 if they are not yet
+expressed by @caps1. The structures in @caps2 are not copied -- they are
+transferred to @caps1, and then @caps2 is freed.
+If either caps is ANY, the resulting caps will be ANY."
+              version="0.10.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_structure"
+              c:identifier="gst_caps_append_structure"
+              doc="Appends @structure to @caps.  The structure is not copied; @caps
+becomes the owner of @structure.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_structure"
+              c:identifier="gst_caps_remove_structure"
+              doc="removes the stucture with the given index from the list of structures
+contained in @caps.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="idx" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge_structure"
+              c:identifier="gst_caps_merge_structure"
+              doc="Appends @structure to @caps if its not already expressed by @caps.  The
+structure is not copied; @caps becomes the owner of @structure.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="gst_caps_get_size"
+              doc="Gets the number of structures contained in @caps.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_structure"
+              c:identifier="gst_caps_get_structure"
+              doc="Finds the structure in @caps that has the index @index, and
+returns it.
+non-const GstStructure *.  This is for programming convenience --
+the caller should be aware that structures inside a constant
+#GstCaps should not be modified. However, if you know the caps
+are writable, either because you have just copied them or made
+them writable with gst_caps_make_writable(), you may modify the
+structure returned in the usual way, e.g. with functions like
+gst_structure_set().
+You do not need to free or unref the structure returned, it
+belongs to the #GstCaps.">
+        <return-value transfer-ownership="full">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_nth"
+              c:identifier="gst_caps_copy_nth"
+              doc="Creates a new #GstCaps and appends a copy of the nth structure
+contained in @caps.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="truncate"
+              c:identifier="gst_caps_truncate"
+              doc="Destructively discard all but the first structure from @caps. Useful when
+fixating. @caps must be writable.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_value"
+              c:identifier="gst_caps_set_value"
+              doc="Sets the given @field on all structures of @caps to the given @value.
+This is a convenience function for calling gst_structure_set_value() on
+all structures of @caps."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_simple"
+              c:identifier="gst_caps_set_simple"
+              doc="Sets fields in a #GstCaps.  The arguments must be passed in the same
+manner as gst_structure_set(), and be NULL-terminated.
+&lt;note&gt;Prior to GStreamer version 0.10.26, this function failed when
+of GStreamer, you may only call this function when GST_CAPS_IS_SIMPLE()
+is %TRUE for @caps.&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_any"
+              c:identifier="gst_caps_is_any"
+              doc="Determines if @caps represents any media format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_empty"
+              c:identifier="gst_caps_is_empty"
+              doc="Determines if @caps represents no media formats.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_fixed"
+              c:identifier="gst_caps_is_fixed"
+              doc="Fixed #GstCaps describe exactly one format, that is, they have exactly
+one structure, and each field in the structure describes a fixed type.
+Examples of non-fixed types are GST_TYPE_INT_RANGE and GST_TYPE_LIST.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_always_compatible"
+              c:identifier="gst_caps_is_always_compatible"
+              doc="A given #GstCaps structure is always compatible with another if
+every media format that is in the first is also contained in the
+second.  That is, @caps1 is a subset of @caps2.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_subset"
+              c:identifier="gst_caps_is_subset"
+              doc="Checks if all caps represented by @subset are also represented by @superset.
+&lt;note&gt;This function does not work reliably if optional properties for caps
+are included on one caps and omitted on the other.&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="superset" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_equal"
+              c:identifier="gst_caps_is_equal"
+              doc="Checks if the given caps represent the same set of caps.
+&lt;note&gt;This function does not work reliably if optional properties for caps
+are included on one caps and omitted on the other.&lt;/note&gt;
+This function deals correctly with passing NULL for any of the caps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_equal_fixed"
+              c:identifier="gst_caps_is_equal_fixed"
+              doc="Tests if two #GstCaps are equal.  This function only works on fixed
+#GstCaps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_intersect"
+              c:identifier="gst_caps_can_intersect"
+              doc="Tries intersecting @caps1 and @caps2 and reports wheter the result would not
+be empty"
+              version="0.10.25">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="intersect"
+              c:identifier="gst_caps_intersect"
+              doc="Creates a new #GstCaps that contains all the formats that are common
+to both @caps1 and @caps2.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="subtract"
+              c:identifier="gst_caps_subtract"
+              doc="Subtracts the @subtrahend from the @minuend.
+&lt;note&gt;This function does not work reliably if optional properties for caps
+are included on one caps and omitted on the other.&lt;/note&gt;">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="subtrahend" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="union"
+              c:identifier="gst_caps_union"
+              doc="Creates a new #GstCaps that contains all the formats that are in
+either @caps1 and @caps2.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps2" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="normalize"
+              c:identifier="gst_caps_normalize"
+              doc="Creates a new #GstCaps that represents the same set of formats as">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="do_simplify"
+              c:identifier="gst_caps_do_simplify"
+              doc="Modifies the given @caps inplace into a representation that represents the
+same set of formats, but in a simpler form.  Component structures that are
+identical are merged.  Component structures that have values that can be
+merged are also merged.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="save_thyself"
+              c:identifier="gst_caps_save_thyself"
+              doc="Serializes a #GstCaps to XML and adds it as a child node of @parent.">
+        <return-value transfer-ownership="full">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace"
+              c:identifier="gst_caps_replace"
+              doc="Replaces *caps with @newcaps.  Unrefs the #GstCaps in the location
+pointed to by @caps, if applicable, then modifies @caps to point to
+This function does not take any locks so you might want to lock
+the object owning @caps pointer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="newcaps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="gst_caps_to_string"
+              doc="Converts @caps to a string representation.  This string representation
+can be converted back to a #GstCaps by gst_caps_from_string().
+For debugging purposes its easier to do something like this:
+|[
+GST_LOG (&quot;caps are %&quot; GST_PTR_FORMAT, caps);
+]|
+This prints the caps in human readble form.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="CapsFlags"
+              doc="anything.
+Extra flags for a caps."
+              c:type="GstCapsFlags">
+      <member name="caps_flags_any"
+              value="1"
+              c:identifier="GST_CAPS_FLAGS_ANY"/>
+    </bitfield>
+    <interface name="ChildProxy"
+               c:type="GstChildProxy"
+               doc="Opaque #GstChildProxy data structure."
+               glib:type-name="GstChildProxy"
+               glib:get-type="gst_child_proxy_get_type"
+               glib:type-struct="ChildProxyInterface">
+      <prerequisite name="Object"/>
+      <virtual-method name="get_child_by_index" invoker="get_child_by_index">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_children_count" invoker="get_children_count">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_child_by_name"
+              c:identifier="gst_child_proxy_get_child_by_name"
+              doc="Looks up a child element by the given name.
+Implementors can use #GstObject together with gst_object_get_name()
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_by_index"
+              c:identifier="gst_child_proxy_get_child_by_index"
+              doc="Fetches a child by its number.
+after usage.
+MT safe.">
+        <return-value transfer-ownership="full" doc="Unref">
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_children_count"
+              c:identifier="gst_child_proxy_get_children_count"
+              doc="Gets the number of child objects this parent contains.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <glib:signal name="child-added">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="child-removed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="ChildProxyInterface"
+            c:type="GstChildProxyInterface"
+            glib:is-gtype-struct-for="ChildProxy"
+            doc="#GstChildProxy interface.">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_child_by_index">
+        <callback name="get_child_by_index" c:type="get_child_by_index">
+          <return-value transfer-ownership="full">
+            <type name="Object" c:type="GstObject*"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+            <parameter name="index" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_children_count">
+        <callback name="get_children_count" c:type="get_children_count">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_added">
+        <callback name="child_added" c:type="child_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_removed">
+        <callback name="child_removed" c:type="child_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="ChildProxy" c:type="GstChildProxy*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="Clock"
+           c:type="GstClock"
+           doc="#GstClock base structure. The values of this structure are
+protected for subclasses, use the methods to use the #GstClock."
+           parent="Object"
+           glib:type-name="GstClock"
+           glib:get-type="gst_clock_get_type"
+           glib:type-struct="ClockClass">
+      <function name="id_ref"
+                c:identifier="gst_clock_id_ref"
+                doc="Increase the refcount of given @id.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="ClockID" c:type="GstClockID"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_unref"
+                c:identifier="gst_clock_id_unref"
+                doc="Unref given @id. When the refcount reaches 0 the
+#GstClockID will be freed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_compare_func"
+                c:identifier="gst_clock_id_compare_func">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="id1" transfer-ownership="none">
+            <type name="any" c:type="gconstpointer"/>
+          </parameter>
+          <parameter name="id2" transfer-ownership="none">
+            <type name="any" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_get_time" c:identifier="gst_clock_id_get_time">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_wait" c:identifier="gst_clock_id_wait">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_wait_async"
+                c:identifier="gst_clock_id_wait_async"
+                doc="Register a callback on the given #GstClockID @id with the given
+function and user_data. When passing a #GstClockID with an invalid
+time to this function, the callback will be called immediately
+with  a time set to GST_CLOCK_TIME_NONE. The callback will
+be called when the time of @id has been reached.
+The callback @func can be invoked from any thread, either provided by the
+core or from a streaming thread. The application should be prepared for this.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ClockCallback" c:type="GstClockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="id_unschedule"
+                c:identifier="gst_clock_id_unschedule"
+                doc="Cancel an outstanding request with @id. This can either
+be an outstanding async notification or a pending sync notification.
+After this call, @id cannot be used anymore to receive sync or
+async notifications, you need to create a new #GstClockID.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="ClockID" c:type="GstClockID"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="change_resolution">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_resolution" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="new_resolution" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_resolution" invoker="get_resolution">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_internal_time" invoker="get_internal_time">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="wait">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="wait_async">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unschedule">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="wait_jitter">
+        <return-value transfer-ownership="full">
+          <type name="ClockReturn" c:type="GstClockReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ClockEntry" c:type="GstClockEntry*"/>
+          </parameter>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_resolution" c:identifier="gst_clock_set_resolution">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolution" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resolution" c:identifier="gst_clock_get_resolution">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="get_time" c:identifier="gst_clock_get_time">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_calibration" c:identifier="gst_clock_set_calibration">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="internal" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="external" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="rate_num" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="rate_denom" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_calibration" c:identifier="gst_clock_get_calibration">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="internal" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="external" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="rate_num" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="rate_denom" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_master" c:identifier="gst_clock_set_master">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="master" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_master" c:identifier="gst_clock_get_master">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="add_observation" c:identifier="gst_clock_add_observation">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="slave" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="master" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="r_squared"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_internal_time"
+              c:identifier="gst_clock_get_internal_time">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="adjust_unlocked" c:identifier="gst_clock_adjust_unlocked">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="internal" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unadjust_unlocked"
+              c:identifier="gst_clock_unadjust_unlocked">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+        <parameters>
+          <parameter name="external" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_single_shot_id"
+              c:identifier="gst_clock_new_single_shot_id">
+        <return-value transfer-ownership="full">
+          <type name="ClockID" c:type="GstClockID"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_periodic_id" c:identifier="gst_clock_new_periodic_id">
+        <return-value transfer-ownership="full">
+          <type name="ClockID" c:type="GstClockID"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="interval" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="stats" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="timeout" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <property name="window-size" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="window-threshold" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="slave_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="internal_calibration">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="external_calibration">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="rate_numerator">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="rate_denominator">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="last_time">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="entries">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="entries_changed">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="resolution">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="stats">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="master">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="filling">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="window_size">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="window_threshold">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="time_index">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="timeout">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="times">
+        <type name="ClockTime" c:type="GstClockTime*"/>
+      </field>
+      <field name="clockid">
+        <type name="ClockID" c:type="GstClockID"/>
+      </field>
+      <union name="ABI" c:type="ABI">
+        <field name="priv" writable="1">
+          <type name="ClockPrivate" c:type="GstClockPrivate*"/>
+        </field>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="GstClockTime" fixed-size="4">
+            <type name="ClockTime"/>
+          </array>
+        </field>
+      </union>
+    </class>
+    <callback name="ClockCallback"
+              c:type="GstClockCallback"
+              doc="The function prototype of the callback.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="clock" transfer-ownership="none">
+          <type name="Clock" c:type="GstClock*"/>
+        </parameter>
+        <parameter name="time" transfer-ownership="none">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </parameter>
+        <parameter name="id" transfer-ownership="none">
+          <type name="ClockID" c:type="GstClockID"/>
+        </parameter>
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   closure="3"
+                   doc="function">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ClockClass"
+            c:type="GstClockClass"
+            glib:is-gtype-struct-for="Clock"
+            doc="be acceptable. The new resolution should be returned.
+implement @wait_jitter instead.
+GStreamer clock class. Override the vmethods to implement the clock
+functionality.">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="change_resolution">
+        <callback name="change_resolution" c:type="change_resolution">
+          <return-value transfer-ownership="full">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="old_resolution" transfer-ownership="none">
+              <type name="ClockTime" c:type="GstClockTime"/>
+            </parameter>
+            <parameter name="new_resolution" transfer-ownership="none">
+              <type name="ClockTime" c:type="GstClockTime"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_resolution">
+        <callback name="get_resolution" c:type="get_resolution">
+          <return-value transfer-ownership="full">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_internal_time">
+        <callback name="get_internal_time" c:type="get_internal_time">
+          <return-value transfer-ownership="full">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait">
+        <callback name="wait" c:type="wait">
+          <return-value transfer-ownership="full">
+            <type name="ClockReturn" c:type="GstClockReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait_async">
+        <callback name="wait_async" c:type="wait_async">
+          <return-value transfer-ownership="full">
+            <type name="ClockReturn" c:type="GstClockReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unschedule">
+        <callback name="unschedule" c:type="unschedule">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait_jitter">
+        <callback name="wait_jitter" c:type="wait_jitter">
+          <return-value transfer-ownership="full">
+            <type name="ClockReturn" c:type="GstClockReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="ClockEntry" c:type="GstClockEntry*"/>
+            </parameter>
+            <parameter name="jitter" transfer-ownership="none">
+              <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="ClockEntry"
+            c:type="GstClockEntry"
+            doc="All pending timeouts or periodic notifies are converted into
+an entry.">
+      <field name="refcount" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="clock" writable="1">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="ClockEntryType" c:type="GstClockEntryType"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="interval" writable="1">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="status" writable="1">
+        <type name="ClockReturn" c:type="GstClockReturn"/>
+      </field>
+      <field name="func" writable="1">
+        <type name="ClockCallback" c:type="GstClockCallback"/>
+      </field>
+      <field name="user_data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <enumeration name="ClockEntryType"
+                 doc="The type of the clock entry"
+                 c:type="GstClockEntryType">
+      <member name="single" value="0" c:identifier="GST_CLOCK_ENTRY_SINGLE"/>
+      <member name="periodic"
+              value="1"
+              c:identifier="GST_CLOCK_ENTRY_PERIODIC"/>
+    </enumeration>
+    <bitfield name="ClockFlags"
+              doc="The capabilities of this clock"
+              c:type="GstClockFlags">
+      <member name="can_do_single_sync"
+              value="16"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC"/>
+      <member name="can_do_single_async"
+              value="32"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC"/>
+      <member name="can_do_periodic_sync"
+              value="64"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC"/>
+      <member name="can_do_periodic_async"
+              value="128"
+              c:identifier="GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC"/>
+      <member name="can_set_resolution"
+              value="256"
+              c:identifier="GST_CLOCK_FLAG_CAN_SET_RESOLUTION"/>
+      <member name="can_set_master"
+              value="512"
+              c:identifier="GST_CLOCK_FLAG_CAN_SET_MASTER"/>
+      <member name="last" value="4096" c:identifier="GST_CLOCK_FLAG_LAST"/>
+    </bitfield>
+    <record name="ClockPrivate" c:type="GstClockPrivate">
+    </record>
+    <enumeration name="ClockReturn"
+                 doc="The return value of a clock operation."
+                 c:type="GstClockReturn">
+      <member name="ok" value="0" c:identifier="GST_CLOCK_OK"/>
+      <member name="early" value="1" c:identifier="GST_CLOCK_EARLY"/>
+      <member name="unscheduled"
+              value="2"
+              c:identifier="GST_CLOCK_UNSCHEDULED"/>
+      <member name="busy" value="3" c:identifier="GST_CLOCK_BUSY"/>
+      <member name="badtime" value="4" c:identifier="GST_CLOCK_BADTIME"/>
+      <member name="error" value="5" c:identifier="GST_CLOCK_ERROR"/>
+      <member name="unsupported"
+              value="6"
+              c:identifier="GST_CLOCK_UNSUPPORTED"/>
+    </enumeration>
+    <enumeration name="ClockType"
+                 doc="point
+The different kind of clocks."
+                 c:type="GstClockType">
+      <member name="realtime"
+              value="0"
+              c:identifier="GST_CLOCK_TYPE_REALTIME"/>
+      <member name="monotonic"
+              value="1"
+              c:identifier="GST_CLOCK_TYPE_MONOTONIC"/>
+    </enumeration>
+    <callback name="CopyFunction"
+              c:type="GstCopyFunction"
+              doc="A function to create a copy of some object or
+increase its reference count."
+              version="0.10.25">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="CoreError"
+                 doc="category.  Make sure you add a custom message to the error call.
+deciding where to go while developing code.
+this functionality yet.
+Core errors are errors inside the core GStreamer library."
+                 c:type="GstCoreError"
+                 glib:error-quark="gst_core_error_quark">
+      <member name="failed" value="1" c:identifier="GST_CORE_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_CORE_ERROR_TOO_LAZY"/>
+      <member name="not_implemented"
+              value="3"
+              c:identifier="GST_CORE_ERROR_NOT_IMPLEMENTED"/>
+      <member name="state_change"
+              value="4"
+              c:identifier="GST_CORE_ERROR_STATE_CHANGE"/>
+      <member name="pad" value="5" c:identifier="GST_CORE_ERROR_PAD"/>
+      <member name="thread" value="6" c:identifier="GST_CORE_ERROR_THREAD"/>
+      <member name="negotiation"
+              value="7"
+              c:identifier="GST_CORE_ERROR_NEGOTIATION"/>
+      <member name="event" value="8" c:identifier="GST_CORE_ERROR_EVENT"/>
+      <member name="seek" value="9" c:identifier="GST_CORE_ERROR_SEEK"/>
+      <member name="caps" value="10" c:identifier="GST_CORE_ERROR_CAPS"/>
+      <member name="tag" value="11" c:identifier="GST_CORE_ERROR_TAG"/>
+      <member name="missing_plugin"
+              value="12"
+              c:identifier="GST_CORE_ERROR_MISSING_PLUGIN"/>
+      <member name="clock" value="13" c:identifier="GST_CORE_ERROR_CLOCK"/>
+      <member name="disabled"
+              value="14"
+              c:identifier="GST_CORE_ERROR_DISABLED"/>
+      <member name="num_errors"
+              value="15"
+              c:identifier="GST_CORE_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <constant name="DEBUG_BG_MASK" value="240">
+      <type name="int"/>
+    </constant>
+    <constant name="DEBUG_FG_MASK" value="15">
+      <type name="int"/>
+    </constant>
+    <constant name="DEBUG_FORMAT_MASK" value="65280">
+      <type name="int"/>
+    </constant>
+    <glib:boxed c:type="GstDate"
+                glib:name="Date"
+                glib:type-name="GstDate"
+                glib:get-type="gst_date_get_type">
+    </glib:boxed>
+    <record name="DebugCategory"
+            c:type="GstDebugCategory"
+            doc="This is the struct that describes the categories. Once initialized with
+#GST_DEBUG_CATEGORY_INIT, its values can&apos;t be changed anymore.">
+      <field name="threshold" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="color" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <method name="free"
+              c:identifier="gst_debug_category_free"
+              doc="Removes and frees the category and all associated resources.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_threshold"
+              c:identifier="gst_debug_category_set_threshold"
+              doc="Sets the threshold of the category to the given level. Debug information will
+only be output if the threshold is lower or equal to the level of the
+debugging message.
+&lt;note&gt;&lt;para&gt;
+Do not use this function in production code, because other functions may
+change the threshold of categories as side effect. It is however a nice
+function to use when debugging (even from gdb).
+&lt;/para&gt;&lt;/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="level" transfer-ownership="none">
+            <type name="DebugLevel" c:type="GstDebugLevel"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset_threshold"
+              c:identifier="gst_debug_category_reset_threshold"
+              doc="Resets the threshold of the category to the default level. Debug information
+will only be output if the threshold is lower or equal to the level of the
+debugging message.
+Use this function to set the threshold back to where it was after using
+gst_debug_category_set_threshold().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_threshold"
+              c:identifier="gst_debug_category_get_threshold"
+              doc="Returns the threshold of a #GstDebugCategory.">
+        <return-value transfer-ownership="full">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gst_debug_category_get_name"
+              doc="Returns the name of a debug category.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_color"
+              c:identifier="gst_debug_category_get_color"
+              doc="Returns the color of a debug category used when printing output in this
+category.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gst_debug_category_get_description"
+              doc="Returns the description of a debug category.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="DebugColorFlags"
+                 doc="These are some terminal style flags you can use when creating your
+debugging categories to make them stand out in debugging output."
+                 c:type="GstDebugColorFlags">
+      <member name="fg_black" value="0" c:identifier="GST_DEBUG_FG_BLACK"/>
+      <member name="fg_red" value="1" c:identifier="GST_DEBUG_FG_RED"/>
+      <member name="fg_green" value="2" c:identifier="GST_DEBUG_FG_GREEN"/>
+      <member name="fg_yellow" value="3" c:identifier="GST_DEBUG_FG_YELLOW"/>
+      <member name="fg_blue" value="4" c:identifier="GST_DEBUG_FG_BLUE"/>
+      <member name="fg_magenta" value="5" c:identifier="GST_DEBUG_FG_MAGENTA"/>
+      <member name="fg_cyan" value="6" c:identifier="GST_DEBUG_FG_CYAN"/>
+      <member name="fg_white" value="7" c:identifier="GST_DEBUG_FG_WHITE"/>
+      <member name="bg_black" value="0" c:identifier="GST_DEBUG_BG_BLACK"/>
+      <member name="bg_red" value="16" c:identifier="GST_DEBUG_BG_RED"/>
+      <member name="bg_green" value="32" c:identifier="GST_DEBUG_BG_GREEN"/>
+      <member name="bg_yellow" value="48" c:identifier="GST_DEBUG_BG_YELLOW"/>
+      <member name="bg_blue" value="64" c:identifier="GST_DEBUG_BG_BLUE"/>
+      <member name="bg_magenta"
+              value="80"
+              c:identifier="GST_DEBUG_BG_MAGENTA"/>
+      <member name="bg_cyan" value="96" c:identifier="GST_DEBUG_BG_CYAN"/>
+      <member name="bg_white" value="112" c:identifier="GST_DEBUG_BG_WHITE"/>
+      <member name="bold" value="256" c:identifier="GST_DEBUG_BOLD"/>
+      <member name="underline" value="512" c:identifier="GST_DEBUG_UNDERLINE"/>
+    </enumeration>
+    <callback name="DebugFuncPtr" c:type="GstDebugFuncPtr">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <bitfield name="DebugGraphDetails"
+              doc="Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE()
+and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS()."
+              version="0.10.15"
+              c:type="GstDebugGraphDetails">
+      <member name="media_type"
+              value="1"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE"/>
+      <member name="caps_details"
+              value="2"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS"/>
+      <member name="non_default_params"
+              value="4"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS"/>
+      <member name="states"
+              value="8"
+              c:identifier="GST_DEBUG_GRAPH_SHOW_STATES"/>
+      <member name="all" value="15" c:identifier="GST_DEBUG_GRAPH_SHOW_ALL"/>
+    </bitfield>
+    <enumeration name="DebugLevel"
+                 doc="debugging output.
+that stops the application from keeping working correctly.
+An examples is gst_element_error, which outputs a message with this priority.
+It does not mean that the application is terminating as with g_errror.
+that could lead to problems or weird behaviour later on. An example of this
+would be clocking issues (&quot;your computer is pretty slow&quot;) or broken input
+data (&quot;Can&apos;t synchronize to stream.&quot;)
+updated about what is happening.
+Examples where this should be used are when a typefind function has
+successfully determined the type of the stream or when an mp3 plugin detects
+the format to be used. (&quot;This file has mono sound.&quot;)
+happens that is not the expected default behavior.
+An example would be notifications about state changes or receiving/sending of
+events.
+useful to know. As a rule of thumb a pipeline that is iterating as expected
+should never output anzthing else but LOG messages.
+Examples for this are referencing/dereferencing of objects or cothread switches.
+in the executed code path is not fully implemented or handled yet. Note
+that this does not replace proper error handling in any way, the purpose
+of this message is to make it easier to spot incomplete/unfinished pieces
+data as memory dumps in the log. They will be displayed as hexdump with
+The level defines the importance of a debugging message. The more important a
+message is, the greater the probability that the debugging system outputs it."
+                 c:type="GstDebugLevel">
+      <member name="none" value="0" c:identifier="GST_LEVEL_NONE"/>
+      <member name="error" value="1" c:identifier="GST_LEVEL_ERROR"/>
+      <member name="warning" value="2" c:identifier="GST_LEVEL_WARNING"/>
+      <member name="info" value="3" c:identifier="GST_LEVEL_INFO"/>
+      <member name="debug" value="4" c:identifier="GST_LEVEL_DEBUG"/>
+      <member name="log" value="5" c:identifier="GST_LEVEL_LOG"/>
+      <member name="fixme" value="6" c:identifier="GST_LEVEL_FIXME"/>
+      <member name="memdump" value="9" c:identifier="GST_LEVEL_MEMDUMP"/>
+      <member name="count" value="10" c:identifier="GST_LEVEL_COUNT"/>
+    </enumeration>
+    <record name="DebugMessage" c:type="GstDebugMessage">
+      <method name="get"
+              c:identifier="gst_debug_message_get"
+              doc="Gets the string representation of a #GstDebugMessage. This function is used
+in debug handlers to extract the message.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="ERROR_SYSTEM" value="system error: %s">
+      <type name="utf8"/>
+    </constant>
+    <constant name="EVENT_TRACE_NAME" value="GstEvent">
+      <type name="utf8"/>
+    </constant>
+    <constant name="EVENT_TYPE_BOTH" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="EVENT_TYPE_SHIFT" value="4">
+      <type name="int"/>
+    </constant>
+    <class name="Element"
+           c:type="GstElement"
+           doc="gst_element_set_state() and gst_element_get_state()
+the element is in the correct state.
+#GST_STATE_VOID_PENDING if the element is in the correct state
+parent element or the application. A #GstPipeline has a bus of its own.
+element by the toplevel #GstPipeline.
+PLAYING. Subtracting @base_time from the current clock time in the PLAYING
+state will yield the running_time against the clock.
+GStreamer element abstract base class."
+           parent="Object"
+           abstract="1"
+           glib:type-name="GstElement"
+           glib:get-type="gst_element_get_type"
+           glib:type-struct="ElementClass">
+      <function name="register"
+                c:identifier="gst_element_register"
+                doc="element (note that passing NULL only works in GStreamer 0.10.13 and later)
+Create a new elementfactory capable of instantiating objects of the">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="rank" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make_from_uri"
+                c:identifier="gst_element_make_from_uri"
+                doc="Creates an element for handling the given URI.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="URIType" c:type="GstURIType"/>
+          </parameter>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="elementname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="state_get_name"
+                c:identifier="gst_element_state_get_name"
+                doc="Gets a string representing the given state.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="state_change_return_get_name"
+                c:identifier="gst_element_state_change_return_get_name"
+                doc="Gets a string representing the given state change result."
+                version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="state_ret" transfer-ownership="none">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="request_new_pad">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="release_pad">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_state" invoker="get_state">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="pending" transfer-ownership="none">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_state" invoker="set_state">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="change_state" invoker="change_state">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="transition" transfer-ownership="none">
+            <type name="StateChange" c:type="GstStateChange"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_bus" invoker="set_bus">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bus" transfer-ownership="none">
+            <type name="Bus" c:type="GstBus*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="provide_clock" invoker="provide_clock">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_clock" invoker="set_clock">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_index" invoker="get_index">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_index" invoker="set_index">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="Index" c:type="GstIndex*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="send_event" invoker="send_event">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_query_types" invoker="get_query_types">
+        <return-value transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="query" invoker="query">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="requires_clock"
+              c:identifier="gst_element_requires_clock"
+              doc="Query if the element requires a clock.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="provides_clock"
+              c:identifier="gst_element_provides_clock"
+              doc="Query if the element provides a clock. A #GstClock provided by an
+element can be used as the global #GstClock for the pipeline.
+An element that can provide a clock is only required to do so in the PAUSED
+state, this means when it is fully negotiated and has allocated the resources
+to operate the clock.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="provide_clock"
+              c:identifier="gst_element_provide_clock"
+              doc="Get the clock provided by the given element.
+&lt;note&gt;An element is only required to provide a clock in the PAUSED
+state. Some elements can provide a clock in other states.&lt;/note&gt;
+if no clock could be provided.  Unref after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="get_clock"
+              c:identifier="gst_element_get_clock"
+              doc="Gets the currently configured clock of the element. This is the clock as was
+last set with gst_element_set_clock().
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="set_clock"
+              c:identifier="gst_element_set_clock"
+              doc="Sets the clock for the element. This function increases the
+refcount on the clock. Any previously set clock on the object
+is unreffed.
+clock when it, for example, is not able to slave its internal clock to the
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_base_time"
+              c:identifier="gst_element_set_base_time"
+              doc="Set the base time of an element. See gst_element_get_base_time().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_base_time"
+              c:identifier="gst_element_get_base_time"
+              doc="Returns the base time of the element. The base time is the
+absolute time of the clock when this element was last put to
+PLAYING. Subtracting the base time from the clock time gives
+the running time of the element.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_start_time"
+              c:identifier="gst_element_set_start_time"
+              doc="Set the start time of an element. The start time of the element is the
+running time of the element when it last went to the PAUSED state. In READY
+or after a flushing seek, it is set to 0.
+Toplevel elements like #GstPipeline will manage the start_time and
+base_time on its children. Setting the start_time to #GST_CLOCK_TIME_NONE
+on such a toplevel element will disable the distribution of the base_time to
+the children and can be useful if the application manages the base_time
+itself, for example if you want to synchronize capture from multiple
+pipelines, and you can also ensure that the pipelines have the same clock.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_start_time"
+              c:identifier="gst_element_get_start_time"
+              doc="Returns the start time of the element. The start time is the
+running time of the clock when this element was last put to PAUSED.
+Usually the start_time is managed by a toplevel element such as
+#GstPipeline.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="is_indexable"
+              c:identifier="gst_element_is_indexable"
+              doc="Queries if the element can be indexed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_index"
+              c:identifier="gst_element_set_index"
+              doc="Set @index on the element. The refcount of the index
+will be increased, any previously set index is unreffed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="Index" c:type="GstIndex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_index"
+              c:identifier="gst_element_get_index"
+              doc="Gets the index from the element.
+element. unref after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </method>
+      <method name="set_bus"
+              c:identifier="gst_element_set_bus"
+              doc="Sets the bus of the element. Increases the refcount on the bus.
+For internal use only, unless you&apos;re testing elements.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bus" transfer-ownership="none">
+            <type name="Bus" c:type="GstBus*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bus"
+              c:identifier="gst_element_get_bus"
+              doc="Returns the bus of the element. Note that only a #GstPipeline will provide a
+bus for the application.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Bus" c:type="GstBus*"/>
+        </return-value>
+      </method>
+      <method name="add_pad"
+              c:identifier="gst_element_add_pad"
+              doc="Adds a pad (link point) to @element. @pad&apos;s parent will be set to @element;
+see gst_object_set_parent() for refcounting information.
+Pads are not automatically activated so elements should perform the needed
+steps to activate the pad in case this pad is added in the PAUSED or PLAYING
+state. See gst_pad_set_active() for more information about activating pads.
+The pad and the element should be unlocked when calling this function.
+This function will emit the #GstElement::pad-added signal on the element.
+a pad with the same name already existed or the pad already had another
+parent.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_pad"
+              c:identifier="gst_element_remove_pad"
+              doc="Removes @pad from @element. @pad will be destroyed if it has not been
+referenced elsewhere using gst_object_unparent().
+This function is used by plugin developers and should not be used
+by applications. Pads that were dynamically requested from elements
+with gst_element_get_request_pad() should be released with the
+gst_element_release_request_pad() function instead.
+Pads are not automatically deactivated so elements should perform the needed
+steps to deactivate the pad in case this pad is removed in the PAUSED or
+PLAYING state. See gst_pad_set_active() for more information about
+deactivating pads.
+The pad and the element should be unlocked when calling this function.
+This function will emit the #GstElement::pad-removed signal on the element.
+pad does not belong to the provided element.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="no_more_pads"
+              c:identifier="gst_element_no_more_pads"
+              doc="Use this function to signal that the element does not expect any more pads
+to show up in the current pipeline. This function should be called whenever
+pads have been added by the element itself. Elements with #GST_PAD_SOMETIMES
+pad templates use this in combination with autopluggers to figure out that
+the element is done initializing its pads.
+This function emits the #GstElement::no-more-pads signal.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_pad"
+              c:identifier="gst_element_get_pad"
+              doc="Retrieves a pad from @element by name. Tries gst_element_get_static_pad()
+first, then gst_element_get_request_pad().
+to the result pad should be released with gst_object_unref() in case of a static pad
+or gst_element_release_request_pad() in case of a request pad.
+Use gst_element_get_static_pad() or gst_element_get_request_pad() instead.
+depending on the type of the pad."
+              deprecated="This function is deprecated as it&apos;s unclear if the reference">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_static_pad"
+              c:identifier="gst_element_get_static_pad"
+              doc="Retrieves a pad from @element by name. This version only retrieves
+already-existing (i.e. &apos;static&apos;) pads.
+usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_request_pad"
+              c:identifier="gst_element_get_request_pad"
+              doc="Retrieves a pad from the element by name. This version only retrieves
+request pads. The pad should be released with
+gst_element_release_request_pad().">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="release_request_pad"
+              c:identifier="gst_element_release_request_pad"
+              doc="Makes the element free the previously requested pad as obtained
+with gst_element_get_request_pad().
+This does not unref the pad. If the pad was created by using
+gst_element_get_request_pad(), gst_element_release_request_pad() needs to be
+followed by gst_object_unref() to free the @pad.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_pads"
+              c:identifier="gst_element_iterate_pads"
+              doc="Retrieves an iterattor of @element&apos;s pads. The iterator should
+be freed after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_src_pads"
+              c:identifier="gst_element_iterate_src_pads"
+              doc="Retrieves an iterator of @element&apos;s source pads.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_sink_pads"
+              c:identifier="gst_element_iterate_sink_pads"
+              doc="Retrieves an iterator of @element&apos;s sink pads.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="send_event"
+              c:identifier="gst_element_send_event"
+              doc="Sends an event to an element. If the element doesn&apos;t implement an
+event handler, the event will be pushed on a random linked sink pad for
+upstream events or a random linked source pad for downstream events.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="seek"
+              c:identifier="gst_element_seek"
+              doc="Sends a seek event to an element. See gst_event_new_seek() for the details of
+the parameters. The seek event is sent to the element using
+gst_element_send_event().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="cur_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="cur" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_query_types"
+              c:identifier="gst_element_get_query_types"
+              doc="Get an array of query types from the element.
+If the element doesn&apos;t implement a query types function,
+the query will be forwarded to the peer of a random linked sink pad.
+be freed or modified.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </method>
+      <method name="query"
+              c:identifier="gst_element_query"
+              doc="Performs a query on the given element.
+For elements that don&apos;t implement a query handler, this function
+forwards the query to a random srcpad or to the peer of a
+random linked sinkpad of this element.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="post_message"
+              c:identifier="gst_element_post_message"
+              doc="Post a message on the element&apos;s #GstBus. This function takes ownership of the
+message; if you want to access the message after this call, you should add an
+additional reference before calling.
+%FALSE if the element did not have a bus.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="message" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="message_full"
+              c:identifier="gst_element_message_full"
+              doc="default message connected to code, or %NULL
+default debugging information, or %NULL
+Post an error, warning or info message on the bus from inside an element.
+#GST_MESSAGE_INFO.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+          <parameter name="domain" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="code" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="file" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="function" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="line" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_locked_state"
+              c:identifier="gst_element_is_locked_state"
+              doc="Checks if the state of an element is locked.
+If the state of an element is locked, state changes of the parent don&apos;t
+affect the element.
+This way you can leave currently unused elements inside bins. Just lock their
+state before changing the state from #GST_STATE_NULL.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_locked_state"
+              c:identifier="gst_element_set_locked_state"
+              doc="Locks the state of an element, so state changes of the parent don&apos;t affect
+this element anymore.
+MT safe.
+or the elements state-locking needed no change.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="locked_state" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sync_state_with_parent"
+              c:identifier="gst_element_sync_state_with_parent"
+              doc="Tries to change the state of the element to the same as its parent.
+If this function returns FALSE, the state of element is undefined.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_state"
+              c:identifier="gst_element_get_state"
+              doc="Can be %NULL.
+state change or %GST_CLOCK_TIME_NONE for infinite timeout.
+Gets the state of the element.
+For elements that performed an ASYNC state change, as reported by
+gst_element_set_state(), this function will block up to the
+specified timeout value for the state change to complete.
+If the element completes the state change or goes into
+an error, this function returns immediately with a return value of
+%GST_STATE_CHANGE_SUCCESS or %GST_STATE_CHANGE_FAILURE respectively.
+For elements that did not return %GST_STATE_CHANGE_ASYNC, this function
+returns the current and pending state immediately.
+This function returns %GST_STATE_CHANGE_NO_PREROLL if the element
+successfully changed its state but is not able to provide data yet.
+This mostly happens for live sources that only produce data in
+%GST_STATE_PLAYING. While the state change return is equivalent to
+%GST_STATE_CHANGE_SUCCESS, it is returned to the application to signal that
+some sink elements might not be able to complete their state change because
+an element is not producing data to complete the preroll. When setting the
+element to playing, the preroll will complete and playback will start.
+and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the
+element is still performing a state change or
+%GST_STATE_CHANGE_FAILURE if the last state change failed.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="a pointer to #GstState to hold the state. Can be %NULL.">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="pending"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="a pointer to #GstState to hold the pending state.">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_state"
+              c:identifier="gst_element_set_state"
+              doc="Sets the state of the element. This function will try to set the
+requested state by going through all the intermediary states and calling
+the class&apos;s state change function for each.
+This function can return #GST_STATE_CHANGE_ASYNC, in which case the
+element will perform the remainder of the state change asynchronously in
+another thread.
+An application can use gst_element_get_state() to wait for the completion
+of the state change or it can wait for a state change message on the bus.
+State changes to %GST_STATE_READY or %GST_STATE_NULL never return
+#GST_STATE_CHANGE_ASYNC.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="abort_state"
+              c:identifier="gst_element_abort_state"
+              doc="Abort the state change of the element. This function is used
+by elements that do asynchronous state changes and find out
+something is wrong.
+This function should be called with the STATE_LOCK held.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="change_state"
+              c:identifier="gst_element_change_state"
+              doc="Perform @transition on @element.
+This function must be called with STATE_LOCK held and is mainly used
+internally.">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="transition" transfer-ownership="none">
+            <type name="StateChange" c:type="GstStateChange"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="continue_state"
+              c:identifier="gst_element_continue_state"
+              doc="Commit the state change of the element and proceed to the next
+pending state if any. This function is used
+by elements that do asynchronous state changes.
+The core will normally call this method automatically when an
+element returned %GST_STATE_CHANGE_SUCCESS from the state change function.
+If after calling this method the element still has not reached
+the pending state, the next state change is performed.
+This method is used internally and should normally not be called by plugins
+or applications.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="ret" transfer-ownership="none">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lost_state"
+              c:identifier="gst_element_lost_state"
+              doc="Brings the element to the lost state. This function calls
+gst_element_lost_state_full() with the new_base_time set to %TRUE.
+This function is used internally and should normally not be called from
+plugins or applications.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="lost_state_full"
+              c:identifier="gst_element_lost_state_full"
+              doc="Brings the element to the lost state. The current state of the
+element is copied to the pending state so that any call to
+gst_element_get_state() will return %GST_STATE_CHANGE_ASYNC.
+An ASYNC_START message is posted with indication to distribute a new
+base_time to the element when @new_base_time is %TRUE.
+If the element was PLAYING, it will go to PAUSED. The element
+will be restored to its PLAYING state by the parent pipeline when it
+prerolls again.
+This is mostly used for elements that lost their preroll buffer
+in the %GST_STATE_PAUSED or %GST_STATE_PLAYING state after a flush,
+they will go to their pending state again when a new preroll buffer is
+queued. This function can only be called when the element is currently
+not in error or an async state change.
+This function is used internally and should normally not be called from
+plugins or applications.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_base_time" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_factory"
+              c:identifier="gst_element_get_factory"
+              doc="Retrieves the factory that was used to create this element.
+no refcounting is needed.">
+        <return-value transfer-ownership="full">
+          <type name="ElementFactory" c:type="GstElementFactory*"/>
+        </return-value>
+      </method>
+      <method name="implements_interface"
+              c:identifier="gst_element_implements_interface"
+              doc="Test whether the given element implements a certain interface of type
+iface_type, and test whether it is supported for this specific instance.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface_type"
+                     transfer-ownership="none"
+                     doc="type of the interface which we want to be implemented">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_all_pads"
+              c:identifier="gst_element_create_all_pads"
+              doc="Creates a pad for each pad template that is always available.
+This function is only useful during object intialization of
+subclasses of #GstElement.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_compatible_pad"
+              c:identifier="gst_element_get_compatible_pad"
+              doc="Looks for an unlinked pad to which the given pad can link. It is not
+guaranteed that linking the pads will work, though it should work in most
+cases.
+found. gst_object_unref() after usage.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_compatible_pad_template"
+              c:identifier="gst_element_get_compatible_pad_template"
+              doc="Retrieves a pad template from @element that is compatible with @compattempl.
+Pads from compatible templates can be linked together.
+unreferencing is necessary.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compattempl" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link"
+              c:identifier="gst_element_link"
+              doc="Links @src to @dest. The link must be from source to
+destination; the other direction will not be tried. The function looks for
+existing pads that aren&apos;t linked yet. It will request new pads if necessary.
+Such pads need to be released manualy when unlinking.
+If multiple links are possible, only one is established.
+Make sure you have added your elements to a bin or pipeline with
+gst_bin_add() before trying to link them.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_many"
+              c:identifier="gst_element_link_many"
+              doc="Chain together a series of elements. Uses gst_element_link().
+Make sure you have added your elements to a bin or pipeline with
+gst_bin_add() before trying to link them.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_2" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_filtered"
+              c:identifier="gst_element_link_filtered"
+              doc="Links @src to @dest using the given caps as filtercaps.
+The link must be from source to
+destination; the other direction will not be tried. The function looks for
+existing pads that aren&apos;t linked yet. It will request new pads if necessary.
+If multiple links are possible, only one is established.
+Make sure you have added your elements to a bin or pipeline with
+gst_bin_add() before trying to link them.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink"
+              c:identifier="gst_element_unlink"
+              doc="Unlinks all source pads of the source element with all sink pads
+of the sink element to which they are linked.
+If the link has been made using gst_element_link(), it could have created an
+requestpad, which has to be released using gst_element_release_request_pad().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink_many"
+              c:identifier="gst_element_unlink_many"
+              doc="Unlinks a series of elements. Uses gst_element_unlink().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="element_2" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_pads"
+              c:identifier="gst_element_link_pads"
+              doc="or NULL for any pad.
+Links the two named pads of the source and destination elements.
+Side effect is that if one of the pads has no parent, it becomes a
+child of the parent of the other element.  If they have different
+parents, the link fails.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink_pads"
+              c:identifier="gst_element_unlink_pads"
+              doc="Unlinks the two named pads of the source and destination elements.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link_pads_filtered"
+              c:identifier="gst_element_link_pads_filtered"
+              doc="Links the two named pads of the source and destination elements. Side effect
+is that if one of the pads has no parent, it becomes a child of the parent of
+the other element. If they have different parents, the link fails. If @caps
+is not #NULL, makes sure that the caps of the link is a subset of @caps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="srcpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="destpadname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="seek_simple" c:identifier="gst_element_seek_simple">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="seek_flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="seek_pos" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_position"
+              c:identifier="gst_element_query_position"
+              doc="On return contains the #GstFormat used.
+Queries an element for the stream position.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_duration"
+              c:identifier="gst_element_query_duration"
+              doc="On return contains the #GstFormat used.
+Queries an element for the total stream duration.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="inout"
+                     transfer-ownership="full"
+                     doc="a pointer to the #GstFormat asked for.">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="A location in which to store the total duration, or NULL.">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_convert"
+              c:identifier="gst_element_query_convert"
+              doc="Queries an element to convert @src_val in @src_format to @dest_format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="found_tags_for_pad"
+              c:identifier="gst_element_found_tags_for_pad"
+              doc="Posts a message to the bus that new tags were found and pushes the
+tags as event. Takes ownership of the @list.
+This is a utility method for elements. Applications should use the
+#GstTagSetter interface.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="found_tags"
+              c:identifier="gst_element_found_tags"
+              doc="Posts a message to the bus that new tags were found, and pushes an event
+to all sourcepads. Takes ownership of the @list.
+This is a utility method for elements. Applications should use the
+#GstTagSetter interface.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="state_lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="state_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="state_cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="current_state">
+        <type name="State" c:type="GstState"/>
+      </field>
+      <field name="next_state">
+        <type name="State" c:type="GstState"/>
+      </field>
+      <field name="pending_state">
+        <type name="State" c:type="GstState"/>
+      </field>
+      <field name="last_return">
+        <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+      </field>
+      <field name="bus">
+        <type name="Bus" c:type="GstBus*"/>
+      </field>
+      <field name="clock">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="base_time">
+        <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+      </field>
+      <field name="numpads">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="pads">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="numsrcpads">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="srcpads">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="numsinkpads">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="sinkpads">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="pads_cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="target_state" writable="1">
+            <type name="State" c:type="GstState"/>
+          </field>
+          <field name="start_time" writable="1">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <glib:signal name="no-more-pads"
+                   doc="This signals that the element will not generate more dynamic pads.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pad-added"
+                   doc="a new #GstPad has been added to the element.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pad-removed"
+                   doc="a #GstPad has been removed from the element">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ElementClass"
+            c:type="GstElementClass"
+            glib:is-gtype-struct-for="Element"
+            doc="GStreamer element class. Override the vmethods to implement the element
+functionality.">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="details">
+        <type name="ElementDetails" c:type="GstElementDetails"/>
+      </field>
+      <field name="elementfactory">
+        <type name="ElementFactory" c:type="GstElementFactory*"/>
+      </field>
+      <field name="padtemplates">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="numpadtemplates">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="pad_templ_cookie">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="pad_added">
+        <callback name="pad_added" c:type="pad_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad_removed">
+        <callback name="pad_removed" c:type="pad_removed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="no_more_pads">
+        <callback name="no_more_pads" c:type="no_more_pads">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="request_new_pad">
+        <callback name="request_new_pad" c:type="request_new_pad">
+          <return-value transfer-ownership="full">
+            <type name="Pad" c:type="GstPad*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="templ" transfer-ownership="none">
+              <type name="PadTemplate" c:type="GstPadTemplate*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="release_pad">
+        <callback name="release_pad" c:type="release_pad">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_state">
+        <callback name="get_state" c:type="get_state">
+          <return-value transfer-ownership="full">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="state" transfer-ownership="none">
+              <type name="State" c:type="GstState*"/>
+            </parameter>
+            <parameter name="pending" transfer-ownership="none">
+              <type name="State" c:type="GstState*"/>
+            </parameter>
+            <parameter name="timeout" transfer-ownership="none">
+              <type name="ClockTime" c:type="GstClockTime"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_state">
+        <callback name="set_state" c:type="set_state">
+          <return-value transfer-ownership="full">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="state" transfer-ownership="none">
+              <type name="State" c:type="GstState"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="change_state">
+        <callback name="change_state" c:type="change_state">
+          <return-value transfer-ownership="full">
+            <type name="StateChangeReturn" c:type="GstStateChangeReturn"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="transition" transfer-ownership="none">
+              <type name="StateChange" c:type="GstStateChange"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_bus">
+        <callback name="set_bus" c:type="set_bus">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="bus" transfer-ownership="none">
+              <type name="Bus" c:type="GstBus*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="provide_clock">
+        <callback name="provide_clock" c:type="provide_clock">
+          <return-value transfer-ownership="full">
+            <type name="Clock" c:type="GstClock*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_clock">
+        <callback name="set_clock" c:type="set_clock">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="clock" transfer-ownership="none">
+              <type name="Clock" c:type="GstClock*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_index">
+        <callback name="get_index" c:type="get_index">
+          <return-value transfer-ownership="full">
+            <type name="Index" c:type="GstIndex*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_index">
+        <callback name="set_index" c:type="set_index">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="send_event">
+        <callback name="send_event" c:type="send_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Event" c:type="GstEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_query_types">
+        <callback name="get_query_types" c:type="get_query_types">
+          <return-value transfer-ownership="none">
+            <type name="QueryType" c:type="GstQueryType*"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query">
+        <callback name="query" c:type="query">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="element" transfer-ownership="none">
+              <type name="Element" c:type="GstElement*"/>
+            </parameter>
+            <parameter name="query" transfer-ownership="none">
+              <type name="Query" c:type="GstQuery*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="add_pad_template"
+              c:identifier="gst_element_class_add_pad_template"
+              doc="Adds a padtemplate to an element class. This is mainly used in the _base_init
+functions of classes.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pad_template"
+              c:identifier="gst_element_class_get_pad_template"
+              doc="Retrieves a padtemplate from @element_class with the given name.
+&lt;note&gt;If you use this function in the #GInstanceInitFunc of an object class
+that has subclasses, make sure to pass the g_class parameter of the
+#GInstanceInitFunc here.&lt;/note&gt;
+No unreferencing is necessary.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pad_template_list"
+              c:identifier="gst_element_class_get_pad_template_list"
+              doc="Retrieves a list of the pad templates associated with @element_class. The
+list must not be modified by the calling code.
+&lt;note&gt;If you use this function in the #GInstanceInitFunc of an object class
+that has subclasses, make sure to pass the g_class parameter of the
+#GInstanceInitFunc here.&lt;/note&gt;">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_details"
+              c:identifier="gst_element_class_set_details"
+              doc="Sets the detailed information for a #GstElementClass.
+&lt;note&gt;This function is for use in _base_init functions only.&lt;/note&gt;
+The @details are copied."
+              deprecated="Use gst_element_class_set_details_simple() instead.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="details" transfer-ownership="none">
+            <type name="ElementDetails" c:type="GstElementDetails*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_details_simple"
+              c:identifier="gst_element_class_set_details_simple"
+              doc="separated with slashes (&apos;/&apos;). See draft-klass.txt of the design docs
+Sets the detailed information for a #GstElementClass. Simpler version of
+gst_element_class_set_details() that generates less linker overhead.
+&lt;note&gt;This function is for use in _base_init functions only.&lt;/note&gt;
+The detail parameter strings are copied into the #GstElementDetails for
+the element class."
+              version="0.10.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="longname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="classification" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="author"
+                     transfer-ownership="none"
+                     doc="Use \n to separate">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="install_std_props"
+              c:identifier="gst_element_class_install_std_props"
+              doc="in a NULL terminated
+further &apos;name&apos;, &apos;id&apos;, &apos;flags&apos; triplets and terminated by NULL.
+Adds a list of standardized properties with types to the @klass.
+the id is for the property switch in your get_prop method, and
+the flags determine readability / writeability.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ElementDetails"
+            c:type="GstElementDetails"
+            doc="separated with slashes (&apos;/&apos;). See draft-klass.txt of the design docs
+for more details and common types
+This struct defines the public information about a #GstElement. It contains
+meta-data about the element that is mostly for the benefit of editors.
+The @klass member can be used by applications to filter elements based
+on functionality.">
+      <field name="longname" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="klass" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="author" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="ElementFactory"
+           c:type="GstElementFactory"
+           doc="The opaque #GstElementFactory data structure."
+           parent="PluginFeature"
+           glib:type-name="GstElementFactory"
+           glib:get-type="gst_element_factory_get_type"
+           glib:type-struct="ElementFactoryClass">
+      <function name="find"
+                c:identifier="gst_element_factory_find"
+                doc="Search for an element factory of the given name. Refs the returned
+element factory; caller is responsible for unreffing.">
+        <return-value transfer-ownership="full">
+          <type name="ElementFactory" c:type="GstElementFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make"
+                c:identifier="gst_element_factory_make"
+                doc="Create a new element of the type defined by the given element factory.
+If name is NULL, then the element will receive a guaranteed unique name,
+consisting of the element factory name and a number.
+If name is given, it will be given the name supplied.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="factoryname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_element_type"
+              c:identifier="gst_element_factory_get_element_type"
+              doc="Get the #GType for elements managed by this factory. The type can
+only be retrieved if the element factory is loaded, which can be
+assured with gst_plugin_feature_load().
+the factory is not loaded.">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_longname"
+              c:identifier="gst_element_factory_get_longname"
+              doc="Gets the longname for this factory">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_klass"
+              c:identifier="gst_element_factory_get_klass"
+              doc="Gets the class for this factory.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gst_element_factory_get_description"
+              doc="Gets the description for this factory.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_author"
+              c:identifier="gst_element_factory_get_author"
+              doc="Gets the author for this factory.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_num_pad_templates"
+              c:identifier="gst_element_factory_get_num_pad_templates"
+              doc="Gets the number of pad_templates in this factory.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_static_pad_templates"
+              c:identifier="gst_element_factory_get_static_pad_templates"
+              doc="Gets the #GList of #GstStaticPadTemplate for this factory.">
+        <return-value transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_uri_type"
+              c:identifier="gst_element_factory_get_uri_type"
+              doc="Gets the type of URIs the element supports or #GST_URI_UNKNOWN if none.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_uri_protocols"
+              c:identifier="gst_element_factory_get_uri_protocols"
+              doc="Gets a NULL-terminated array of protocols this element supports or NULL if
+no protocols are supported. You may not change the contents of the returned
+array, as it is still owned by the element factory. Use g_strdupv() to
+make a copy of the protocol string array if you need to.">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="has_interface"
+              c:identifier="gst_element_factory_has_interface"
+              doc="Check if @factory implements the interface with name @interfacename."
+              version="0.10.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="interfacename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create"
+              c:identifier="gst_element_factory_create"
+              doc="Create a new element of the type defined by the given elementfactory.
+It will be given the name supplied, since all elements require a name as
+their first argument.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_src_caps"
+              c:identifier="gst_element_factory_can_src_caps"
+              doc="Checks if the factory can source the given capability.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_sink_caps"
+              c:identifier="gst_element_factory_can_sink_caps"
+              doc="Checks if the factory can sink the given capability.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="PluginFeature" c:type="GstPluginFeature"/>
+      </field>
+      <field name="type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="details">
+        <type name="ElementDetails" c:type="GstElementDetails"/>
+      </field>
+      <field name="staticpadtemplates">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="numpadtemplates">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="uri_type">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="uri_protocols">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="interfaces">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="ElementFactoryClass"
+            c:type="GstElementFactoryClass"
+            glib:is-gtype-struct-for="ElementFactory">
+      <field name="parent_class">
+        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="ElementFlags"
+              doc="gst_bin_remove() on a child already being removed immediately returns FALSE
+The standard flags that an element may have."
+              c:type="GstElementFlags">
+      <member name="locked_state"
+              value="16"
+              c:identifier="GST_ELEMENT_LOCKED_STATE"/>
+      <member name="is_sink" value="32" c:identifier="GST_ELEMENT_IS_SINK"/>
+      <member name="unparenting"
+              value="64"
+              c:identifier="GST_ELEMENT_UNPARENTING"/>
+      <member name="flag_last"
+              value="1048576"
+              c:identifier="GST_ELEMENT_FLAG_LAST"/>
+    </bitfield>
+    <record name="Event" c:type="GstEvent" doc="A #GstEvent.">
+      <field name="mini_object" writable="1">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="EventType" c:type="GstEventType"/>
+      </field>
+      <field name="timestamp" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="src" writable="1">
+        <type name="Object" c:type="GstObject*"/>
+      </field>
+      <field name="structure" writable="1">
+        <type name="Structure" c:type="GstStructure*"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <field name="seqnum" writable="1">
+          <type name="uint32" c:type="guint32"/>
+        </field>
+        <field name="_gst_reserved" writable="1">
+          <type name="any" c:type="gpointer"/>
+        </field>
+      </union>
+      <constructor name="new_custom"
+                   c:identifier="gst_event_new_custom"
+                   doc="the structure.
+Create a new custom-typed event. This can be used for anything not
+handled by other event-specific functions to pass an event to another
+element.
+Make sure to allocate an event type with the #GST_EVENT_MAKE_TYPE macro,
+assigning a free number and filling in the correct direction and
+serialization flags.
+New custom events can also be created by subclassing the event type if
+needed.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="EventType" c:type="GstEventType"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_flush_start"
+                   c:identifier="gst_event_new_flush_start"
+                   doc="Allocate a new flush start event. The flush start event can be sent
+upstream and downstream and travels out-of-bounds with the dataflow.
+It marks pads as being flushing and will make them return
+#GST_FLOW_WRONG_STATE when used for data flow with gst_pad_push(),
+gst_pad_chain(), gst_pad_alloc_buffer(), gst_pad_get_range() and
+gst_pad_pull_range(). Any event (except a #GST_EVENT_FLUSH_STOP) received
+on a flushing pad will return %FALSE immediately.
+Elements should unlock any blocking functions and exit their streaming
+functions as fast as possible when this event is received.
+This event is typically generated after a seek to flush out all queued data
+in the pipeline so that the new media is played as soon as possible.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_flush_stop"
+                   c:identifier="gst_event_new_flush_stop"
+                   doc="Allocate a new flush stop event. The flush stop event can be sent
+upstream and downstream and travels serialized with the dataflow.
+It is typically sent after sending a FLUSH_START event to make the
+pads accept data again.
+Elements can process this event synchronized with the dataflow since
+the preceeding FLUSH_START event stopped the dataflow.
+This event is typically generated to complete a seek and to resume
+dataflow.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_eos"
+                   c:identifier="gst_event_new_eos"
+                   doc="Create a new EOS event. The eos event can only travel downstream
+synchronized with the buffer flow. Elements that receive the EOS
+event on a pad can return #GST_FLOW_UNEXPECTED as a #GstFlowReturn
+when data after the EOS event arrives.
+The EOS event will travel down to the sink elements in the pipeline
+which will then post the #GST_MESSAGE_EOS on the bus after they have
+finished playing any buffered data.
+When all sinks have posted an EOS message, an EOS message is
+forwarded to the application.
+The EOS event itself will not cause any state transitions of the pipeline.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_new_segment"
+                   c:identifier="gst_event_new_new_segment"
+                   doc="Allocate a new newsegment event with the given format/values tripplets
+This method calls gst_event_new_new_segment_full() passing a default
+value of 1.0 for applied_rate">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_new_segment_full"
+                   c:identifier="gst_event_new_new_segment_full"
+                   doc="Allocate a new newsegment event with the given format/values triplets.
+The newsegment event marks the range of buffers to be processed. All
+data not within the segment range is not to be processed. This can be
+used intelligently by plugins to apply more efficient methods of skipping
+unneeded data. The valid range is expressed with the @start and @stop
+values.
+The position value of the segment is used in conjunction with the start
+value to convert the buffer timestamps into the stream time. This is
+usually done in sinks to report the current stream_time.
+is a valid @stop given, it must be greater or equal the @start, including
+when the indicated playback @rate is &lt; 0.
+The @applied_rate value provides information about any rate adjustment that
+has already been made to the timestamps and content on the buffers of the
+stream. (@rate * @applied_rate) should always equal the rate that has been
+requested for playback. For example, if an element has an input segment
+with intended playback @rate of 2.0 and applied_rate of 1.0, it can adjust
+incoming timestamps and buffer content by half and output a newsegment event
+with @rate of 1.0 and @applied_rate of 2.0
+After a newsegment event, the buffer stream time is calculated with:
+position + (TIMESTAMP(buf) - start) * ABS (rate * applied_rate)"
+                   version="0.10.6">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="applied_rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_tag"
+                   c:identifier="gst_event_new_tag"
+                   doc="Generates a metadata tag event from the given @taglist.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="taglist" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_buffer_size"
+                   c:identifier="gst_event_new_buffer_size"
+                   doc="Create a new buffersize event. The event is sent downstream and notifies
+elements that they should provide a buffer of the specified dimensions.
+When the @async flag is set, a thread boundary is prefered.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="minsize" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="maxsize" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="async" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_qos"
+                   c:identifier="gst_event_new_qos"
+                   doc="Allocate a new qos event with the given values.
+The QOS event is generated in an element that wants an upstream
+element to either reduce or increase its rate because of
+high/low CPU load or other resource usage such as network performance.
+Typically sinks generate these events for each buffer they receive.
+element that generated the QoS event (usually the sink). The value is
+generally computed based on more long term statistics about the streams
+timestamps compared to the clock.
+A value &lt; 1.0 indicates that the upstream element is producing data faster
+than real-time. A value &gt; 1.0 indicates that the upstream element is not
+producing data fast enough. 1.0 is the ideal @proportion value. The
+proportion value can safely be used to lower or increase the quality of
+the element.
+buffer that caused the element to generate the QOS event. A negative value
+means that the buffer with @timestamp arrived in time. A positive value
+indicates how late the buffer with @timestamp was.
+to generate the QOS event. It is expressed in running time and thus an ever
+increasing value.
+The upstream element can use the @diff and @timestamp values to decide
+whether to process more buffers. For possitive @diff, all buffers with
+timestamp &lt;= @timestamp + @diff will certainly arrive late in the sink
+as well. A (negative) @diff value so that @timestamp + @diff would yield a
+result smaller than 0 is not allowed.
+The application can use general event probes to intercept the QoS
+event and implement custom application specific QoS handling.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="proportion" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="diff" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_seek"
+                   c:identifier="gst_event_new_seek"
+                   doc="Allocate a new seek event with the given parameters.
+The seek event configures playback of the pipeline between @start to @stop
+at the speed given in @rate, also called a playback segment.
+The @start and @stop values are expressed in @format.
+A @rate of 1.0 means normal playback rate, 2.0 means double speed.
+Negatives values means backwards playback. A value of 0.0 for the
+rate is not allowed and should be accomplished instead by PAUSING the
+pipeline.
+A pipeline has a default playback segment configured with a start
+position of 0, a stop position of -1 and a rate of 1.0. The currently
+configured playback segment can be queried with #GST_QUERY_SEGMENT.
+start and stop fields in playback segment. Adjustments can be made relative
+or absolute to the last configured values. A type of #GST_SEEK_TYPE_NONE
+means that the position should not be updated.
+When the rate is positive and @start has been updated, playback will start
+from the newly configured start position.
+For negative rates, playback will start from the newly configured stop
+position (if any). If the stop position if updated, it must be different from
+-1 for negative rates.
+It is not possible to seek relative to the current playback position, to do
+this, PAUSE the pipeline, query the current playback position with
+#GST_QUERY_POSITION and update the playback segment current position with a
+#GST_SEEK_TYPE_SET to the desired position.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="start_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_navigation"
+                   c:identifier="gst_event_new_navigation"
+                   doc="structure.
+Create a new navigation event from the given description.">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_latency"
+                   c:identifier="gst_event_new_latency"
+                   doc="Create a new latency event. The event is sent upstream from the sinks and
+notifies elements that they should add an additional @latency to the
+running time before synchronising against the clock.
+The latency is mostly used in live sinks and is always expressed in
+the time format."
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_step"
+                   c:identifier="gst_event_new_step"
+                   doc="Create a new step event. The purpose of the step event is to instruct a sink
+to skip @amount (expressed in @format) of media. It can be used to implement
+stepping through the video frame by frame or for doing fast trick modes.
+A rate of &lt;= 0.0 is not allowed, pause the pipeline or reverse the playback
+direction of the pipeline to get the same effect.
+The @flush flag will clear any pending data in the pipeline before starting
+the step operation.
+The @intermediate flag instructs the pipeline that this step operation is
+part of a larger step operation."
+                   version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="amount" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="intermediate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_sink_message"
+                   c:identifier="gst_event_new_sink_message"
+                   doc="Create a new sink-message event. The purpose of the sink-message event is
+to instruct a sink to post the message contained in the event synchronized
+with the stream."
+                   version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GstEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_structure"
+              c:identifier="gst_event_get_structure"
+              doc="Access the structure of the event.
+owned by the event, which means that you should not free it and
+that the pointer becomes invalid when you free the event.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="has_name"
+              c:identifier="gst_event_has_name"
+              doc="Checks if @event has the given @name. This function is usually used to
+check the name of a custom event."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_seqnum"
+              c:identifier="gst_event_get_seqnum"
+              doc="Retrieve the sequence number of a event.
+Events have ever-incrementing sequence numbers, which may also be set
+explicitly via gst_event_set_seqnum(). Sequence numbers are typically used to
+indicate that a event corresponds to some other set of events or messages,
+for example an EOS event corresponding to a SEEK event. It is considered good
+practice to make this correspondence when possible, though it is not
+required.
+Note that events and messages share the same sequence number incrementor;
+two events or messages will never not have the same sequence number unless
+that correspondence was made explicitly.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="set_seqnum"
+              c:identifier="gst_event_set_seqnum"
+              doc="Set the sequence number of a event.
+This function might be called by the creator of a event to indicate that the
+event relates to other events or messages. See gst_event_get_seqnum() for
+more information.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="seqnum" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_new_segment"
+              c:identifier="gst_event_parse_new_segment"
+              doc="Get the update flag, rate, format, start, stop and position in the
+newsegment event. In general, gst_event_parse_new_segment_full() should
+be used instead of this, to also retrieve the applied_rate value of the
+segment. See gst_event_new_new_segment_full() for a full description
+of the newsegment event.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_new_segment_full"
+              c:identifier="gst_event_parse_new_segment_full"
+              doc="Get the update, rate, applied_rate, format, start, stop and
+position in the newsegment event. See gst_event_new_new_segment_full()
+for a full description of the newsegment event."
+              version="0.10.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="applied_rate"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_tag"
+              c:identifier="gst_event_parse_tag"
+              doc="Parses a tag @event and stores the results in the given @taglist location.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="taglist" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffer_size"
+              c:identifier="gst_event_parse_buffer_size"
+              doc="Get the format, minsize, maxsize and async-flag in the buffersize event.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="minsize" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="maxsize" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="async" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos"
+              c:identifier="gst_event_parse_qos"
+              doc="Get the proportion, diff and timestamp in the qos event. See
+gst_event_new_qos() for more information about the different QoS values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="proportion"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="diff" transfer-ownership="none">
+            <type name="ClockTimeDiff" c:type="GstClockTimeDiff*"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_seek"
+              c:identifier="gst_event_parse_seek"
+              doc="Parses a seek @event and stores the results in the given result locations.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags*"/>
+          </parameter>
+          <parameter name="start_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType*"/>
+          </parameter>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType*"/>
+          </parameter>
+          <parameter name="stop" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_latency"
+              c:identifier="gst_event_parse_latency"
+              doc="Get the latency in the latency event."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_step"
+              c:identifier="gst_event_parse_step"
+              doc="Parse the step event."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="amount" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="flush" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="intermediate"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_sink_message"
+              c:identifier="gst_event_parse_sink_message"
+              doc="Parse the sink-message event. Unref @msg after usage."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msg" transfer-ownership="none">
+            <type name="Message" c:type="GstMessage**"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="EventClass" c:type="GstEventClass">
+      <field name="mini_object_class" writable="1">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="EventType"
+              doc="without a NEWSEGMENT event.
+send messages that should be emitted in sync with
+rendering.
+that the downstream elements are being starved of or
+flooded with data.
+user requests, such as mouse or keyboard movements,
+to upstream elements.
+data flow.
+In-band when travelling downstream.
+#GstEventType lists the standard event types that can be sent in a pipeline.
+The custom event types can be used for private messages between elements
+that can&apos;t be expressed using normal
+GStreamer buffer passing semantics. Custom events carry an arbitrary
+#GstStructure.
+Specific custom events are distinguished by the name of the structure."
+              c:type="GstEventType">
+      <member name="unknown" value="0" c:identifier="GST_EVENT_UNKNOWN"/>
+      <member name="flush_start"
+              value="19"
+              c:identifier="GST_EVENT_FLUSH_START"/>
+      <member name="flush_stop"
+              value="39"
+              c:identifier="GST_EVENT_FLUSH_STOP"/>
+      <member name="eos" value="86" c:identifier="GST_EVENT_EOS"/>
+      <member name="newsegment"
+              value="102"
+              c:identifier="GST_EVENT_NEWSEGMENT"/>
+      <member name="tag" value="118" c:identifier="GST_EVENT_TAG"/>
+      <member name="buffersize"
+              value="134"
+              c:identifier="GST_EVENT_BUFFERSIZE"/>
+      <member name="sink_message"
+              value="150"
+              c:identifier="GST_EVENT_SINK_MESSAGE"/>
+      <member name="qos" value="241" c:identifier="GST_EVENT_QOS"/>
+      <member name="seek" value="257" c:identifier="GST_EVENT_SEEK"/>
+      <member name="navigation"
+              value="273"
+              c:identifier="GST_EVENT_NAVIGATION"/>
+      <member name="latency" value="289" c:identifier="GST_EVENT_LATENCY"/>
+      <member name="step" value="305" c:identifier="GST_EVENT_STEP"/>
+      <member name="custom_upstream"
+              value="513"
+              c:identifier="GST_EVENT_CUSTOM_UPSTREAM"/>
+      <member name="custom_downstream"
+              value="518"
+              c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM"/>
+      <member name="custom_downstream_oob"
+              value="514"
+              c:identifier="GST_EVENT_CUSTOM_DOWNSTREAM_OOB"/>
+      <member name="custom_both"
+              value="519"
+              c:identifier="GST_EVENT_CUSTOM_BOTH"/>
+      <member name="custom_both_oob"
+              value="515"
+              c:identifier="GST_EVENT_CUSTOM_BOTH_OOB"/>
+    </bitfield>
+    <bitfield name="EventTypeFlags"
+              doc="flow.
+#GstEventTypeFlags indicate the aspects of the different #GstEventType
+values. You can get the type flags of a #GstEventType with the
+gst_event_type_get_flags() function."
+              c:type="GstEventTypeFlags">
+      <member name="upstream"
+              value="1"
+              c:identifier="GST_EVENT_TYPE_UPSTREAM"/>
+      <member name="downstream"
+              value="2"
+              c:identifier="GST_EVENT_TYPE_DOWNSTREAM"/>
+      <member name="serialized"
+              value="4"
+              c:identifier="GST_EVENT_TYPE_SERIALIZED"/>
+    </bitfield>
+    <constant name="FOURCC_FORMAT" value="c%c%c%c">
+      <type name="utf8"/>
+    </constant>
+    <callback name="FilterFunc"
+              c:type="GstFilterFunc"
+              doc="Function prototype for a filter callback taht can be use in gst_filter_run().
+The function should apply its filtering to @obj. Additional data passed to
+gst_filter_run() are in @data.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="FlowReturn"
+                 doc="sent yet) (unused/unimplemented).
+this error should post an error message with more
+details.
+this (and higher) to define custom success
+codes. Since 0.10.7.
+custom success code to this to avoid compiler
+warnings). Since 0.10.29.
+this (and lower) to define custom error codes.
+Since 0.10.7.
+custom error code to this to avoid compiler
+warnings). Since 0.10.29.
+The result of passing data to a pad.
+Note that the custom return values should not be exposed outside of the
+element scope and are available since 0.10.7."
+                 c:type="GstFlowReturn">
+      <member name="custom_success_2"
+              value="102"
+              c:identifier="GST_FLOW_CUSTOM_SUCCESS_2"/>
+      <member name="custom_success_1"
+              value="101"
+              c:identifier="GST_FLOW_CUSTOM_SUCCESS_1"/>
+      <member name="custom_success"
+              value="100"
+              c:identifier="GST_FLOW_CUSTOM_SUCCESS"/>
+      <member name="resend" value="1" c:identifier="GST_FLOW_RESEND"/>
+      <member name="ok" value="0" c:identifier="GST_FLOW_OK"/>
+      <member name="not_linked" value="-1" c:identifier="GST_FLOW_NOT_LINKED"/>
+      <member name="wrong_state"
+              value="-2"
+              c:identifier="GST_FLOW_WRONG_STATE"/>
+      <member name="unexpected" value="-3" c:identifier="GST_FLOW_UNEXPECTED"/>
+      <member name="not_negotiated"
+              value="-4"
+              c:identifier="GST_FLOW_NOT_NEGOTIATED"/>
+      <member name="error" value="-5" c:identifier="GST_FLOW_ERROR"/>
+      <member name="not_supported"
+              value="-6"
+              c:identifier="GST_FLOW_NOT_SUPPORTED"/>
+      <member name="custom_error"
+              value="-100"
+              c:identifier="GST_FLOW_CUSTOM_ERROR"/>
+      <member name="custom_error_1"
+              value="-101"
+              c:identifier="GST_FLOW_CUSTOM_ERROR_1"/>
+      <member name="custom_error_2"
+              value="-102"
+              c:identifier="GST_FLOW_CUSTOM_ERROR_2"/>
+    </enumeration>
+    <enumeration name="Format"
+                 doc="samples for raw audio, frames/fields for raw video (some, but not all,
+elements support this; use @GST_FORMAT_TIME if you don&apos;t have a good
+reason to query for samples/frames)
+May 2009)
+this as of May 2009)
+Standard predefined formats"
+                 c:type="GstFormat">
+      <member name="undefined" value="0" c:identifier="GST_FORMAT_UNDEFINED"/>
+      <member name="default" value="1" c:identifier="GST_FORMAT_DEFAULT"/>
+      <member name="bytes" value="2" c:identifier="GST_FORMAT_BYTES"/>
+      <member name="time" value="3" c:identifier="GST_FORMAT_TIME"/>
+      <member name="buffers" value="4" c:identifier="GST_FORMAT_BUFFERS"/>
+      <member name="percent" value="5" c:identifier="GST_FORMAT_PERCENT"/>
+    </enumeration>
+    <record name="FormatDefinition"
+            c:type="GstFormatDefinition"
+            doc="A format definition">
+      <field name="value" writable="1">
+        <type name="Format" c:type="GstFormat"/>
+      </field>
+      <field name="nick" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="quark" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+    </record>
+    <glib:boxed c:type="GstGError"
+                glib:name="GError"
+                glib:type-name="GstGError"
+                glib:get-type="gst_g_error_get_type">
+    </glib:boxed>
+    <class name="GhostPad"
+           c:type="GstGhostPad"
+           doc="Opaque #GstGhostPad structure."
+           parent="ProxyPad"
+           glib:type-name="GstGhostPad"
+           glib:get-type="gst_ghost_pad_get_type"
+           glib:type-struct="GhostPadClass">
+      <constructor name="new"
+                   c:identifier="gst_ghost_pad_new"
+                   doc="Create a new ghostpad with @target as the target. The direction will be taken
+from the target pad. @target must be unlinked.
+Will ref the target.">
+        <return-value transfer-ownership="full">
+          <type name="GhostPad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_no_target"
+                   c:identifier="gst_ghost_pad_new_no_target"
+                   doc="Create a new ghostpad without a target with the given direction.
+A target can be set on the ghostpad later with the
+gst_ghost_pad_set_target() function.
+The created ghostpad will not have a padtemplate.">
+        <return-value transfer-ownership="full">
+          <type name="GhostPad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dir" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_template"
+                   c:identifier="gst_ghost_pad_new_from_template"
+                   doc="Create a new ghostpad with @target as the target. The direction will be taken
+from the target pad. The template used on the ghostpad will be @template.
+Will ref the target."
+                   version="0.10.10">
+        <return-value transfer-ownership="full">
+          <type name="GhostPad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_no_target_from_template"
+                   c:identifier="gst_ghost_pad_new_no_target_from_template"
+                   doc="Create a new ghostpad based on @templ, without setting a target. The
+direction will be taken from the @templ."
+                   version="0.10.10">
+        <return-value transfer-ownership="full">
+          <type name="GhostPad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_target"
+              c:identifier="gst_ghost_pad_get_target"
+              doc="Get the target pad of @gpad. Unref target pad after usage.
+has no target set. Unref target pad after usage.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+      </method>
+      <method name="set_target"
+              c:identifier="gst_ghost_pad_set_target"
+              doc="Set the new target of the ghostpad @gpad. Any existing target
+is unlinked and links to the new target are established. if @newtarget is
+NULL the target will be cleared.
+when the internal pads could not be linked.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="newtarget" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="construct"
+              c:identifier="gst_ghost_pad_construct"
+              doc="Finish initialization of a newly allocated ghost pad.
+This function is most useful in language bindings and when subclassing
+#GstGhostPad; plugin and application developers normally will not call this
+function. Call this function directly after a call to g_object_new
+(GST_TYPE_GHOST_PAD, &quot;direction&quot;, @dir, ..., NULL)."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="pad">
+        <type name="ProxyPad" c:type="GstProxyPad"/>
+      </field>
+      <field name="priv">
+        <type name="GhostPadPrivate" c:type="GstGhostPadPrivate*"/>
+      </field>
+    </class>
+    <record name="GhostPadClass"
+            c:type="GstGhostPadClass"
+            glib:is-gtype-struct-for="GhostPad">
+      <field name="parent_class">
+        <type name="ProxyPadClass" c:type="GstProxyPadClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="GhostPadPrivate" c:type="GstGhostPadPrivate">
+    </record>
+    <constant name="INDEX_ID_INVALID" value="-1">
+      <type name="int"/>
+    </constant>
+    <interface name="ImplementsInterface"
+               c:type="GstImplementsInterface"
+               doc="Opaque #GstImplementsInterface structure."
+               glib:type-name="GstImplementsInterface"
+               glib:get-type="gst_implements_interface_get_type"
+               glib:type-struct="ImplementsInterfaceClass">
+      <prerequisite name="Element"/>
+      <virtual-method name="supported">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iface_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+    </interface>
+    <record name="ImplementsInterfaceClass"
+            c:type="GstImplementsInterfaceClass"
+            glib:is-gtype-struct-for="ImplementsInterface">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="supported">
+        <callback name="supported" c:type="supported">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="iface" transfer-ownership="none">
+              <type name="ImplementsInterface"
+                    c:type="GstImplementsInterface*"/>
+            </parameter>
+            <parameter name="iface_type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="Index"
+           c:type="GstIndex"
+           doc="Opaque #GstIndex structure."
+           parent="Object"
+           glib:type-name="GstIndex"
+           glib:get-type="gst_index_get_type"
+           glib:type-struct="IndexClass">
+      <constructor name="new"
+                   c:identifier="gst_index_new"
+                   doc="Create a new tileindex object">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_writer_id">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="writer_id"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="writer_string" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="commit" invoker="commit">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add_entry">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="IndexEntry" c:type="GstIndexEntry*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_assoc_entry">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none">
+            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="7">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="commit"
+              c:identifier="gst_index_commit"
+              doc="Tell the index that the writer with the given id is done
+with this index and is not going to write any more entries
+to it.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_group"
+              c:identifier="gst_index_get_group"
+              doc="Get the id of the current group.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="new_group"
+              c:identifier="gst_index_new_group"
+              doc="Create a new group for the given index. It will be
+set as the current group.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_group"
+              c:identifier="gst_index_set_group"
+              doc="Set the current groupnumber to the given argument.
+did not exist.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="groupnum" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_certainty"
+              c:identifier="gst_index_set_certainty"
+              doc="Set the certainty of the given index.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="certainty" transfer-ownership="none">
+            <type name="IndexCertainty" c:type="GstIndexCertainty"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_certainty"
+              c:identifier="gst_index_get_certainty"
+              doc="Get the certainty of the given index.">
+        <return-value transfer-ownership="full">
+          <type name="IndexCertainty" c:type="GstIndexCertainty"/>
+        </return-value>
+      </method>
+      <method name="set_filter"
+              c:identifier="gst_index_set_filter"
+              doc="Lets the app register a custom filter function so that
+it can select what entries should be stored in the index.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="IndexFilter" c:type="GstIndexFilter"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_filter_full"
+              c:identifier="gst_index_set_filter_full"
+              doc="Lets the app register a custom filter function so that
+it can select what entries should be stored in the index.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="IndexFilter" c:type="GstIndexFilter"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_destroy"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolver"
+              c:identifier="gst_index_set_resolver"
+              doc="Lets the app register a custom function to map index
+ids to writer descriptions.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolver"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="IndexResolver" c:type="GstIndexResolver"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_resolver_full"
+              c:identifier="gst_index_set_resolver_full"
+              doc="Lets the app register a custom function to map index
+ids to writer descriptions."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolver"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="IndexResolver" c:type="GstIndexResolver"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="user_data_destroy"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_writer_id"
+              c:identifier="gst_index_get_writer_id"
+              doc="Before entries can be added to the index, a writer
+should obtain a unique id. The methods to add new entries
+to the index require this id as an argument.
+The application can implement a custom function to map the writer object
+to a string. That string will be used to register or look up an id
+in the index.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="writer" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="id" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_format"
+              c:identifier="gst_index_add_format"
+              doc="Adds a format entry into the index. This function is
+used to map dynamic GstFormat ids to their original
+format key.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_associationv"
+              c:identifier="gst_index_add_associationv"
+              doc="Associate given format/value pairs with each other.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="n" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="IndexAssociation" c:type="GstIndexAssociation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_association"
+              c:identifier="gst_index_add_association"
+              doc="Associate given format/value pairs with each other.
+Be sure to pass gint64 values to this functions varargs,
+you might want to use a gint64 cast to be sure.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_object"
+              c:identifier="gst_index_add_object"
+              doc="Add the given object to the index with the given key.
+This function is not yet implemented.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_id"
+              c:identifier="gst_index_add_id"
+              doc="Add an id entry into the index.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_assoc_entry"
+              c:identifier="gst_index_get_assoc_entry"
+              doc="Finds the given format/value in the index
+value was not found.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_assoc_entry_full"
+              c:identifier="gst_index_get_assoc_entry_full"
+              doc="Finds the given format/value in the index with the given
+compare function and user_data.
+value was not found.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="method" transfer-ownership="none">
+            <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="7">
+            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="resolver" writable="1">
+        <type name="IndexResolver" c:type="GstIndexResolver"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="groups">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="curgroup">
+        <type name="IndexGroup" c:type="GstIndexGroup*"/>
+      </field>
+      <field name="maxgroup">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="method">
+        <type name="IndexResolverMethod" c:type="GstIndexResolverMethod"/>
+      </field>
+      <field name="resolver">
+        <type name="IndexResolver" c:type="GstIndexResolver"/>
+      </field>
+      <field name="resolver_user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="filter">
+        <type name="IndexFilter" c:type="GstIndexFilter"/>
+      </field>
+      <field name="filter_user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="filter_user_data_destroy">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="writers">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="last_id">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="resolver_user_data_destroy">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="entry-added">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="IndexEntry" c:type="GstIndexEntry"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="IndexAssociation"
+            c:type="GstIndexAssociation"
+            doc="An association in an entry.">
+      <field name="format" writable="1">
+        <type name="Format" c:type="GstFormat"/>
+      </field>
+      <field name="value" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+    </record>
+    <enumeration name="IndexCertainty"
+                 doc="The certainty of a group in the index."
+                 c:type="GstIndexCertainty">
+      <member name="unknown" value="0" c:identifier="GST_INDEX_UNKNOWN"/>
+      <member name="certain" value="1" c:identifier="GST_INDEX_CERTAIN"/>
+      <member name="fuzzy" value="2" c:identifier="GST_INDEX_FUZZY"/>
+    </enumeration>
+    <record name="IndexClass"
+            c:type="GstIndexClass"
+            glib:is-gtype-struct-for="Index">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="get_writer_id">
+        <callback name="get_writer_id" c:type="get_writer_id">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="writer_id"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="writer_string" transfer-ownership="full">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="commit">
+        <callback name="commit" c:type="commit">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_entry">
+        <callback name="add_entry" c:type="add_entry">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="IndexEntry" c:type="GstIndexEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_assoc_entry">
+        <callback name="get_assoc_entry" c:type="get_assoc_entry">
+          <return-value transfer-ownership="full">
+            <type name="IndexEntry" c:type="GstIndexEntry*"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="method" transfer-ownership="none">
+              <type name="IndexLookupMethod" c:type="GstIndexLookupMethod"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="AssocFlags" c:type="GstAssocFlags"/>
+            </parameter>
+            <parameter name="format" transfer-ownership="none">
+              <type name="Format" c:type="GstFormat"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="int64" c:type="gint64"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none">
+              <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="7">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="entry_added">
+        <callback name="entry_added" c:type="entry_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="index" transfer-ownership="none">
+              <type name="Index" c:type="GstIndex*"/>
+            </parameter>
+            <parameter name="entry" transfer-ownership="none">
+              <type name="IndexEntry" c:type="GstIndexEntry*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="IndexEntry"
+            c:type="GstIndexEntry"
+            doc="The basic element of an index."
+            glib:type-name="GstIndexEntry"
+            glib:get-type="gst_index_entry_get_type">
+      <field name="type" writable="1">
+        <type name="IndexEntryType" c:type="GstIndexEntryType"/>
+      </field>
+      <field name="id" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <union name="data" c:type="data">
+        <record name="id" c:type="id">
+          <field name="description" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+        </record>
+        <record name="assoc" c:type="assoc">
+          <field name="nassocs" writable="1">
+            <type name="int" c:type="gint"/>
+          </field>
+          <field name="assocs" writable="1">
+            <type name="IndexAssociation" c:type="GstIndexAssociation*"/>
+          </field>
+          <field name="flags" writable="1">
+            <type name="AssocFlags" c:type="GstAssocFlags"/>
+          </field>
+        </record>
+        <record name="object" c:type="object">
+          <field name="key" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+          <field name="type" writable="1">
+            <type name="GType" c:type="GType"/>
+          </field>
+          <field name="object" writable="1">
+            <type name="any" c:type="gpointer"/>
+          </field>
+        </record>
+        <record name="format" c:type="format">
+          <field name="format" writable="1">
+            <type name="Format" c:type="GstFormat"/>
+          </field>
+          <field name="key" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+        </record>
+      </union>
+      <method name="copy"
+              c:identifier="gst_index_entry_copy"
+              doc="Copies an entry and returns the result.">
+        <return-value transfer-ownership="full">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_index_entry_free"
+              doc="Free the memory used by the given entry.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="assoc_map"
+              c:identifier="gst_index_entry_assoc_map"
+              doc="Gets alternative formats associated with the indexentry.
+format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="IndexEntryType"
+                 doc="The different types of entries in the index."
+                 c:type="GstIndexEntryType">
+      <member name="id" value="0" c:identifier="GST_INDEX_ENTRY_ID"/>
+      <member name="association"
+              value="1"
+              c:identifier="GST_INDEX_ENTRY_ASSOCIATION"/>
+      <member name="object" value="2" c:identifier="GST_INDEX_ENTRY_OBJECT"/>
+      <member name="format" value="3" c:identifier="GST_INDEX_ENTRY_FORMAT"/>
+    </enumeration>
+    <class name="IndexFactory"
+           c:type="GstIndexFactory"
+           doc="The GstIndexFactory object"
+           parent="PluginFeature"
+           glib:type-name="GstIndexFactory"
+           glib:get-type="gst_index_factory_get_type"
+           glib:type-struct="IndexFactoryClass">
+      <constructor name="new"
+                   c:identifier="gst_index_factory_new"
+                   doc="Create a new indexfactory with the given parameters">
+        <return-value transfer-ownership="full">
+          <type name="IndexFactory" c:type="GstIndexFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="longdesc" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="find"
+                c:identifier="gst_index_factory_find"
+                doc="Search for an indexfactory of the given name.">
+        <return-value transfer-ownership="full">
+          <type name="IndexFactory" c:type="GstIndexFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make"
+                c:identifier="gst_index_factory_make"
+                doc="Create a new #GstIndex instance from the
+indexfactory with the given name.">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="destroy"
+              c:identifier="gst_index_factory_destroy"
+              doc="Removes the index from the global list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="create"
+              c:identifier="gst_index_factory_create"
+              doc="Create a new #GstIndex instance from the
+given indexfactory.">
+        <return-value transfer-ownership="full">
+          <type name="Index" c:type="GstIndex*"/>
+        </return-value>
+      </method>
+      <field name="feature">
+        <type name="PluginFeature" c:type="GstPluginFeature"/>
+      </field>
+      <field name="longdesc">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="type">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="IndexFactoryClass"
+            c:type="GstIndexFactoryClass"
+            glib:is-gtype-struct-for="IndexFactory">
+      <field name="parent">
+        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="IndexFilter"
+              c:type="GstIndexFilter"
+              doc="Function to filter out entries in the index.
+to the index, %FALSE otherwise.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="Index" c:type="GstIndex*"/>
+        </parameter>
+        <parameter name="entry" transfer-ownership="none">
+          <type name="IndexEntry" c:type="GstIndexEntry*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="IndexFlags"
+              doc="Flags for this index"
+              c:type="GstIndexFlags">
+      <member name="writable" value="16" c:identifier="GST_INDEX_WRITABLE"/>
+      <member name="readable" value="32" c:identifier="GST_INDEX_READABLE"/>
+      <member name="flag_last"
+              value="4096"
+              c:identifier="GST_INDEX_FLAG_LAST"/>
+    </bitfield>
+    <record name="IndexGroup"
+            c:type="GstIndexGroup"
+            doc="A group of related entries in an index.">
+      <field name="groupnum" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="entries" writable="1">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="certainty" writable="1">
+        <type name="IndexCertainty" c:type="GstIndexCertainty"/>
+      </field>
+      <field name="peergroup" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <enumeration name="IndexLookupMethod"
+                 doc="Specify the method to find an index entry in the index."
+                 c:type="GstIndexLookupMethod">
+      <member name="exact" value="0" c:identifier="GST_INDEX_LOOKUP_EXACT"/>
+      <member name="before" value="1" c:identifier="GST_INDEX_LOOKUP_BEFORE"/>
+      <member name="after" value="2" c:identifier="GST_INDEX_LOOKUP_AFTER"/>
+    </enumeration>
+    <callback name="IndexResolver"
+              c:type="GstIndexResolver"
+              doc="Function to resolve ids to writer descriptions.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="Index" c:type="GstIndex*"/>
+        </parameter>
+        <parameter name="writer" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="writer_string" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="IndexResolverMethod"
+                 doc="The method used to resolve index writers"
+                 c:type="GstIndexResolverMethod">
+      <member name="custom"
+              value="0"
+              c:identifier="GST_INDEX_RESOLVER_CUSTOM"/>
+      <member name="gtype" value="1" c:identifier="GST_INDEX_RESOLVER_GTYPE"/>
+      <member name="path" value="2" c:identifier="GST_INDEX_RESOLVER_PATH"/>
+    </enumeration>
+    <record name="Iterator"
+            c:type="GstIterator"
+            doc="created.
+#GstIterator base structure. The values of this structure are
+protected for subclasses, use the methods to use the #GstIterator.">
+      <field name="next" writable="1">
+        <type name="IteratorNextFunction" c:type="GstIteratorNextFunction"/>
+      </field>
+      <field name="item" writable="1">
+        <type name="IteratorItemFunction" c:type="GstIteratorItemFunction"/>
+      </field>
+      <field name="resync" writable="1">
+        <type name="IteratorResyncFunction"
+              c:type="GstIteratorResyncFunction"/>
+      </field>
+      <field name="free" writable="1">
+        <type name="IteratorFreeFunction" c:type="GstIteratorFreeFunction"/>
+      </field>
+      <field name="pushed" writable="1">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="lock" writable="1">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="cookie" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="master_cookie" writable="1">
+        <type name="any" c:type="guint32*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_iterator_new"
+                   doc="iterator changed.
+Create a new iterator. This function is mainly used for objects
+implementing the next/resync/free function to iterate a data structure.
+For each item retrieved, the @item function is called with the lock
+held. The @free function is called when the iterator is freed.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="lock" transfer-ownership="none">
+            <type name="GLib.Mutex" c:type="GMutex*"/>
+          </parameter>
+          <parameter name="master_cookie"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="next" transfer-ownership="none" scope="call">
+            <type name="IteratorNextFunction"
+                  c:type="GstIteratorNextFunction"/>
+          </parameter>
+          <parameter name="item" transfer-ownership="none" scope="call">
+            <type name="IteratorItemFunction"
+                  c:type="GstIteratorItemFunction"/>
+          </parameter>
+          <parameter name="resync" transfer-ownership="none" scope="call">
+            <type name="IteratorResyncFunction"
+                  c:type="GstIteratorResyncFunction"/>
+          </parameter>
+          <parameter name="free" transfer-ownership="none" scope="call">
+            <type name="IteratorFreeFunction"
+                  c:type="GstIteratorFreeFunction"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_list"
+                   c:identifier="gst_iterator_new_list"
+                   doc="is changed.
+Create a new iterator designed for iterating @list.
+The list you iterate is usually part of a data structure @owner and is
+protected with @lock.
+The iterator will use @lock to retrieve the next item of the list and it
+will then call the @item function before releasing @lock again.
+The @item function usualy makes sure that the item remains alive while
+responsible for freeing/unreffing the item after usage as explained in
+gst_iterator_next().
+When a concurrent update to the list is performed, usually by @owner while
+holding @lock, @master_cookie will be updated. The iterator implementation
+will notice the update of the cookie and will return %GST_ITERATOR_RESYNC to
+the user of the iterator in the next call to gst_iterator_next().
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="lock" transfer-ownership="none">
+            <type name="GLib.Mutex" c:type="GMutex*"/>
+          </parameter>
+          <parameter name="master_cookie"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList**"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="item" transfer-ownership="none" scope="call">
+            <type name="IteratorItemFunction"
+                  c:type="GstIteratorItemFunction"/>
+          </parameter>
+          <parameter name="free" transfer-ownership="none" scope="call">
+            <type name="IteratorDisposeFunction"
+                  c:type="GstIteratorDisposeFunction"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_single"
+                   c:identifier="gst_iterator_new_single"
+                   doc="This #GstIterator is a convenient iterator for the common
+case where a #GstIterator needs to be returned but only
+a single object has to be considered. This happens often
+for the #GstPadIterIntLinkFunction."
+                   version="0.10.25">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="copy" transfer-ownership="none" scope="call">
+            <type name="CopyFunction" c:type="GstCopyFunction"/>
+          </parameter>
+          <parameter name="free" transfer-ownership="none" scope="call">
+            <type name="GLib.FreeFunc" c:type="GFreeFunc"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="next"
+              c:identifier="gst_iterator_next"
+              doc="Get the next item from the iterator in @elem.
+Only when this function returns %GST_ITERATOR_OK, @elem will contain a valid
+value. For iterators that return refcounted objects, the returned object
+will have its refcount increased and should therefore be unreffed after
+usage.
+When this function returns %GST_ITERATOR_DONE, no more elements can be
+retrieved from @it.
+A return value of %GST_ITERATOR_RESYNC indicates that the element list was
+concurrently updated. The user of @it should call gst_iterator_resync() to
+get the newly updated list.
+A return value of %GST_ITERATOR_ERROR indicates an unrecoverable fatal error.
+is a refcounted object.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="IteratorResult" c:type="GstIteratorResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="elem" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resync"
+              c:identifier="gst_iterator_resync"
+              doc="Resync the iterator. this function is mostly called
+after gst_iterator_next() returned %GST_ITERATOR_RESYNC.
+When an iterator was pushed on @it, it will automatically be popped again
+with this function.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_iterator_free"
+              doc="Free the iterator.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_iterator_push"
+              doc="Pushes @other iterator onto @it. All calls performed on @it are
+forwarded to @other. If @other returns %GST_ITERATOR_DONE, it is
+popped again and calls are handled by @it again.
+This function is mainly used by objects implementing the iterator
+next function to recurse into substructures.
+When gst_iterator_resync() is called on @it, @other will automatically be
+popped.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="other" transfer-ownership="none">
+            <type name="Iterator" c:type="GstIterator*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="filter"
+              c:identifier="gst_iterator_filter"
+              doc="Create a new iterator from an existing iterator. The new iterator
+will only return those elements that match the given compare function @func.
+in the iterator.
+When this iterator is freed, @it will also be freed.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fold"
+              c:identifier="gst_iterator_fold"
+              doc="Folds @func over the elements of @iter. That is to say, @func will be called
+as @func (object, @ret, @user_data) for each object in @it. The normal use
+of this procedure is to accumulate the results of operating on the objects in
+before @func is called, and it should be unrefed after use in @func.
+This procedure can be used (and is used internally) to implement the
+gst_iterator_foreach() and gst_iterator_find_custom() operations.
+The fold will proceed as long as @func returns TRUE. When the iterator has no
+more arguments, %GST_ITERATOR_DONE will be returned. If @func returns FALSE,
+the fold will stop, and %GST_ITERATOR_OK will be returned. Errors or resyncs
+will cause fold to return %GST_ITERATOR_ERROR or %GST_ITERATOR_RESYNC as
+appropriate.
+The iterator will not be freed.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="IteratorResult" c:type="GstIteratorResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" scope="call">
+            <type name="IteratorFoldFunction"
+                  c:type="GstIteratorFoldFunction"/>
+          </parameter>
+          <parameter name="ret" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gst_iterator_foreach"
+              doc="Iterate over all element of @it and call the given function @func for
+each element.  As in gst_iterator_fold(), the refcount of a refcounted
+object will be increased before @func is called, and should be unrefed
+after use.
+freed.
+MT safe.">
+        <return-value transfer-ownership="full" doc="The iterator will not be">
+          <type name="IteratorResult" c:type="GstIteratorResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GLib.Func" c:type="GFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_custom"
+              c:identifier="gst_iterator_find_custom"
+              doc="Find the first element in @it that matches the compare function @func.
+the refcount of a refcounted object will be increased before @func is
+called, and should be unrefed after use.
+The iterator will not be freed.
+This function will return NULL if an error or resync happened to
+the iterator.
+function or NULL when no element matched.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="IteratorDisposeFunction"
+              c:type="GstIteratorDisposeFunction"
+              doc="The function that will be called when a #GList iterator is freed. The
+owner of the #GList iterator can then clean up its resources.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="owner" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorFoldFunction"
+              c:type="GstIteratorFoldFunction"
+              doc="A function to be passed to gst_iterator_fold().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="item" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="ret" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorFreeFunction"
+              c:type="GstIteratorFreeFunction"
+              doc="This function will be called when the iterator is freed.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="IteratorItem"
+                 doc="The result of a #GstIteratorItemFunction."
+                 c:type="GstIteratorItem">
+      <member name="skip" value="0" c:identifier="GST_ITERATOR_ITEM_SKIP"/>
+      <member name="pass" value="1" c:identifier="GST_ITERATOR_ITEM_PASS"/>
+      <member name="end" value="2" c:identifier="GST_ITERATOR_ITEM_END"/>
+    </enumeration>
+    <callback name="IteratorItemFunction"
+              c:type="GstIteratorItemFunction"
+              doc="The function that will be called after the next item of the iterator
+has been retrieved. This function will typically increase the refcount
+of the item or make a copy.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.">
+      <return-value transfer-ownership="full">
+        <type name="IteratorItem" c:type="GstIteratorItem"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+        <parameter name="item" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="IteratorNextFunction"
+              c:type="GstIteratorNextFunction"
+              doc="The function that will be called when the next element of the iterator
+should be retrieved.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.">
+      <return-value transfer-ownership="full">
+        <type name="IteratorResult" c:type="GstIteratorResult"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+        <parameter name="result" transfer-ownership="none">
+          <type name="any" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="IteratorResult"
+                 doc="The result of gst_iterator_next()."
+                 c:type="GstIteratorResult">
+      <member name="done" value="0" c:identifier="GST_ITERATOR_DONE"/>
+      <member name="ok" value="1" c:identifier="GST_ITERATOR_OK"/>
+      <member name="resync" value="2" c:identifier="GST_ITERATOR_RESYNC"/>
+      <member name="error" value="3" c:identifier="GST_ITERATOR_ERROR"/>
+    </enumeration>
+    <callback name="IteratorResyncFunction"
+              c:type="GstIteratorResyncFunction"
+              doc="This function will be called whenever a concurrent update happened
+to the iterated datastructure. The implementor of the iterator should
+restart the iterator from the beginning and clean up any state it might
+have.
+Implementors of a #GstIterator should implement this
+function and pass it to the constructor of the custom iterator.
+The function will be called with the iterator lock held.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="it" transfer-ownership="none">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="LICENSE_UNKNOWN" value="unknown">
+      <type name="utf8"/>
+    </constant>
+    <enumeration name="LibraryError"
+                 doc="category.  Make sure you add a custom message to the error call.
+deciding where to go while developing code.
+Library errors are for errors from the library being used by elements
+(initializing, finalizing, settings, ...)"
+                 c:type="GstLibraryError"
+                 glib:error-quark="gst_library_error_quark">
+      <member name="failed" value="1" c:identifier="GST_LIBRARY_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_LIBRARY_ERROR_TOO_LAZY"/>
+      <member name="init" value="3" c:identifier="GST_LIBRARY_ERROR_INIT"/>
+      <member name="shutdown"
+              value="4"
+              c:identifier="GST_LIBRARY_ERROR_SHUTDOWN"/>
+      <member name="settings"
+              value="5"
+              c:identifier="GST_LIBRARY_ERROR_SETTINGS"/>
+      <member name="encode" value="6" c:identifier="GST_LIBRARY_ERROR_ENCODE"/>
+      <member name="num_errors"
+              value="7"
+              c:identifier="GST_LIBRARY_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <callback name="LogFunction"
+              c:type="GstLogFunction"
+              doc="Function prototype for a logging function that can be registered with
+gst_debug_add_log_function().
+Use G_GNUC_NO_INSTRUMENT on that function.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="DebugMessage" c:type="GstDebugMessage*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="MESSAGE_TRACE_NAME" value="GstMessage">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MSECOND" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="M_PI" value="3.14159265359">
+      <type name="double"/>
+    </constant>
+    <record name="Message" c:type="GstMessage" doc="A #GstMessage.">
+      <field name="mini_object" writable="1">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="lock" writable="1">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="cond" writable="1">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="MessageType" c:type="GstMessageType"/>
+      </field>
+      <field name="timestamp" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="src" writable="1">
+        <type name="Object" c:type="GstObject*"/>
+      </field>
+      <field name="structure" writable="1">
+        <type name="Structure" c:type="GstStructure*"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="seqnum" writable="1">
+            <type name="uint32" c:type="guint32"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <constructor name="new_eos"
+                   c:identifier="gst_message_new_eos"
+                   doc="Create a new eos message. This message is generated and posted in
+the sink elements of a GstBin. The bin will only forward the EOS
+message to the application if all sinks have posted an EOS message.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_error"
+                   c:identifier="gst_message_new_error"
+                   doc="Create a new error message. The message will copy @error and
+occured. The pipeline will probably (partially) stop. The application
+receiving this message should stop the pipeline.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_warning"
+                   c:identifier="gst_message_new_warning"
+                   doc="Create a new warning message. The message will make copies of @error and
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_info"
+                   c:identifier="gst_message_new_info"
+                   doc="Create a new info message. The message will make copies of @error and
+MT safe."
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_tag"
+                   c:identifier="gst_message_new_tag"
+                   doc="Create a new tag message. The message will take ownership of the tag list.
+The message is posted by elements that discovered a new taglist.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="tag_list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_tag_full"
+                   c:identifier="gst_message_new_tag_full"
+                   doc="Create a new tag message. The message will take ownership of the tag list.
+The message is posted by elements that discovered a new taglist.
+MT safe."
+                   version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+          <parameter name="tag_list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_buffering"
+                   c:identifier="gst_message_new_buffering"
+                   doc="Create a new buffering message. This message can be posted by an element that
+needs to buffer data before it can continue processing. @percent should be a
+value between 0 and 100. A value of 100 means that the buffering completed.
+When @percent is &lt; 100 the application should PAUSE a PLAYING pipeline. When
+The application must be prepared to receive BUFFERING messages in the
+PREROLLING state and may only set the pipeline to PLAYING after receiving a
+message with @percent set to 100, which can happen after the pipeline
+completed prerolling.
+MT safe."
+                   version="0.10.11">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="percent" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_state_changed"
+                   c:identifier="gst_message_new_state_changed"
+                   doc="Create a state change message. This message is posted whenever an element
+changed its state.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="oldstate" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+          <parameter name="newstate" transfer-ownership="none" doc="state">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+          <parameter name="pending" transfer-ownership="none" doc="state">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_state_dirty"
+                   c:identifier="gst_message_new_state_dirty"
+                   doc="Create a state dirty message. This message is posted whenever an element
+changed its state asynchronously and is used internally to update the
+states of container objects.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_step_done"
+                   c:identifier="gst_message_new_step_done"
+                   doc="This message is posted by elements when they complete a part, when @intermediate set
+to TRUE, or a complete step operation.
+MT safe."
+                   version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="amount" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="intermediate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="eos" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_clock_provide"
+                   c:identifier="gst_message_new_clock_provide"
+                   doc="Create a clock provide message. This message is posted whenever an
+element is ready to provide a clock or lost its ability to provide
+a clock (maybe because it paused or became EOS).
+This message is mainly used internally to manage the clock
+selection.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+          <parameter name="ready" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_clock_lost"
+                   c:identifier="gst_message_new_clock_lost"
+                   doc="Create a clock lost message. This message is posted whenever the
+clock is not valid anymore.
+If this message is posted by the pipeline, the pipeline will
+select a new clock again when it goes to PLAYING. It might therefore
+be needed to set the pipeline to PAUSED and PLAYING again.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_new_clock"
+                   c:identifier="gst_message_new_new_clock"
+                   doc="Create a new clock message. This message is posted whenever the
+pipeline selectes a new clock for the pipeline.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_application"
+                   c:identifier="gst_message_new_application"
+                   doc="the structure.
+Create a new application-typed message. GStreamer will never create these
+messages; they are a gift from us to you. Enjoy.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_element"
+                   c:identifier="gst_message_new_element"
+                   doc="the structure.
+Create a new element-specific message. This is meant as a generic way of
+allowing one-way communication from an element to an application, for example
+&quot;the firewire cable was unplugged&quot;. The format of the message should be
+documented in the element&apos;s documentation. The structure field can be NULL.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_segment_start"
+                   c:identifier="gst_message_new_segment_start"
+                   doc="Create a new segment message. This message is posted by elements that
+start playback of a segment as a result of a segment seek. This message
+is not received by the application but is used for maintenance reasons in
+container elements.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_segment_done"
+                   c:identifier="gst_message_new_segment_done"
+                   doc="Create a new segment done message. This message is posted by elements that
+finish playback of a segment as a result of a segment seek. This message
+is received by the application after all elements that posted a segment_start
+have posted the segment_done.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_duration"
+                   c:identifier="gst_message_new_duration"
+                   doc="Create a new duration message. This message is posted by elements that
+know the duration of a stream in a specific format. This message
+is received by bins and is used to calculate the total duration of a
+pipeline. Elements may post a duration message with a duration of
+GST_CLOCK_TIME_NONE to indicate that the duration has changed and the
+cached duration should be discarded. The new duration can then be
+retrieved via a query.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_latency"
+                   c:identifier="gst_message_new_latency"
+                   doc="This message can be posted by elements when their latency requirements have
+changed.
+MT safe."
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_async_start"
+                   c:identifier="gst_message_new_async_start"
+                   doc="This message is posted by elements when they start an ASYNC state change.
+PLAYING.
+MT safe."
+                   version="0.10.13">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="new_base_time" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_async_done"
+                   c:identifier="gst_message_new_async_done"
+                   doc="The message is posted when elements completed an ASYNC state change.
+MT safe."
+                   version="0.10.13">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_structure_change"
+                   c:identifier="gst_message_new_structure_change"
+                   doc="Create a new structure change message. This message is posted when the
+structure of a pipeline is in the process of being changed, for example
+when pads are linked or unlinked.
+MT safe."
+                   version="0.10.22.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StructureChangeType" c:type="GstStructureChangeType"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+          <parameter name="busy" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_stream_status"
+                   c:identifier="gst_message_new_stream_status"
+                   doc="Create a new stream status message. This message is posted when a streaming
+thread is created/destroyed or when the state changed.
+MT safe."
+                   version="0.10.24.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StreamStatusType" c:type="GstStreamStatusType"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_request_state"
+                   c:identifier="gst_message_new_request_state"
+                   doc="This message can be posted by elements when they want to have their state
+changed. A typical use case would be an audio server that wants to pause the
+pipeline because a higher priority stream is being played.
+MT safe."
+                   version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_step_start"
+                   c:identifier="gst_message_new_step_start"
+                   doc="This message is posted by elements when they accept or activate a new step
+event for @amount in @format.
+queued it for execution in the streaming threads.
+is now ready to start executing the step in the streaming thread. After this
+message is emited, the application can queue a new step operation in the
+element.
+MT safe."
+                   version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="amount" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="intermediate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_qos"
+                   c:identifier="gst_message_new_qos"
+                   doc="A QOS message is posted on the bus whenever an element decides to drop a
+buffer because of QoS reasons or whenever it changes its processing strategy
+because of QoS reasons (quality adjustments such as processing at lower
+accuracy).
+This message can be posted by an element that performs synchronisation against the
+clock (live) or it could be dropped by an element that performs QoS because of QOS
+events received from a downstream element (!live).
+respective running-time, stream-time, timestamp and duration of the (dropped)
+buffer that generated the QoS event. Values can be left to
+GST_CLOCK_TIME_NONE when unknown.
+MT safe."
+                   version="0.10.29">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="live" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="running_time" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="stream_time" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_custom"
+                   c:identifier="gst_message_new_custom"
+                   doc="the structure.
+Create a new custom-typed message. This can be used for anything not
+handled by other message-specific functions to pass a message to the
+app. The structure field can be NULL.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Message" c:type="GstMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="MessageType" c:type="GstMessageType"/>
+          </parameter>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_seqnum"
+              c:identifier="gst_message_get_seqnum"
+              doc="Retrieve the sequence number of a message.
+Messages have ever-incrementing sequence numbers, which may also be set
+explicitly via gst_message_set_seqnum(). Sequence numbers are typically used
+to indicate that a message corresponds to some other set of messages or
+events, for example a SEGMENT_DONE message corresponding to a SEEK event. It
+is considered good practice to make this correspondence when possible, though
+it is not required.
+Note that events and messages share the same sequence number incrementor;
+two events or messages will never not have the same sequence number unless
+that correspondence was made explicitly.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="set_seqnum"
+              c:identifier="gst_message_set_seqnum"
+              doc="Set the sequence number of a message.
+This function might be called by the creator of a message to indicate that
+the message relates to other messages or events. See gst_message_get_seqnum()
+for more information.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="seqnum" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_error"
+              c:identifier="gst_message_parse_error"
+              doc="Extracts the GError and debug string from the GstMessage. The values returned
+in the output arguments are copies; the caller must free them when done.
+Typical usage of this function might be:
+|[
+...
+switch (GST_MESSAGE_TYPE (msg)) {
+GError *err = NULL;
+gchar *dbg_info = NULL;
+gst_message_parse_error (msg, &amp;amp;err, &amp;amp;dbg_info);
+GST_OBJECT_NAME (msg-&gt;src), err-&gt;message);
+g_error_free (err);
+g_free (dbg_info);
+break;
+}
+...
+}
+...
+]|
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gerror" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_warning"
+              c:identifier="gst_message_parse_warning"
+              doc="Extracts the GError and debug string from the GstMessage. The values returned
+in the output arguments are copies; the caller must free them when done.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gerror" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_info"
+              c:identifier="gst_message_parse_info"
+              doc="Extracts the GError and debug string from the GstMessage. The values returned
+in the output arguments are copies; the caller must free them when done.
+MT safe."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gerror" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError**"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_tag"
+              c:identifier="gst_message_parse_tag"
+              doc="Extracts the tag list from the GstMessage. The tag list returned in the
+output argument is a copy; the caller must free it when done.
+Typical usage of this function might be:
+|[
+...
+switch (GST_MESSAGE_TYPE (msg)) {
+GstTagList *tags = NULL;
+gst_message_parse_tag (msg, &amp;amp;tags);
+g_print (&quot;Got tags from element %s\n&quot;, GST_OBJECT_NAME (msg-&gt;src));
+handle_tags (tags);
+gst_tag_list_free (tags);
+break;
+}
+...
+}
+...
+]|
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag_list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_tag_full"
+              c:identifier="gst_message_parse_tag_full"
+              doc="Extracts the tag list from the GstMessage. The tag list returned in the
+output argument is a copy; the caller must free it when done.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad**"/>
+          </parameter>
+          <parameter name="tag_list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering"
+              c:identifier="gst_message_parse_buffering"
+              doc="Extracts the buffering percent from the GstMessage. see also
+gst_message_new_buffering().
+MT safe."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="percent" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_stats"
+              c:identifier="gst_message_set_buffering_stats"
+              doc="Configures the buffering stats values in @message."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="BufferingMode" c:type="GstBufferingMode"/>
+          </parameter>
+          <parameter name="avg_in" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="avg_out" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="buffering_left" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_stats"
+              c:identifier="gst_message_parse_buffering_stats"
+              doc="Extracts the buffering stats values from @message."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="BufferingMode" c:type="GstBufferingMode*"/>
+          </parameter>
+          <parameter name="avg_in" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="avg_out" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="buffering_left"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_state_changed"
+              c:identifier="gst_message_parse_state_changed"
+              doc="Extracts the old and new states from the GstMessage.
+Typical usage of this function might be:
+|[
+...
+switch (GST_MESSAGE_TYPE (msg)) {
+GstState old_state, new_state;
+gst_message_parse_state_changed (msg, &amp;amp;old_state, &amp;amp;new_state, NULL);
+g_print (&quot;Element %s changed state from %s to %s.\n&quot;,
+GST_OBJECT_NAME (msg-&gt;src),
+gst_element_state_get_name (old_state),
+gst_element_state_get_name (new_state));
+break;
+}
+...
+}
+...
+]|
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="oldstate" transfer-ownership="none">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="newstate"
+                     transfer-ownership="none"
+                     doc="state, or NULL">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+          <parameter name="pending"
+                     transfer-ownership="none"
+                     doc="state, or NULL">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_step_done"
+              c:identifier="gst_message_parse_step_done"
+              doc="Extract the values the step_done message.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="amount" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="flush" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="intermediate"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="eos" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_clock_provide"
+              c:identifier="gst_message_parse_clock_provide"
+              doc="Extracts the clock and ready flag from the GstMessage.
+The clock object returned remains valid until the message is freed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock**"/>
+          </parameter>
+          <parameter name="ready" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_clock_lost"
+              c:identifier="gst_message_parse_clock_lost"
+              doc="Extracts the lost clock from the GstMessage.
+The clock object returned remains valid until the message is freed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_new_clock"
+              c:identifier="gst_message_parse_new_clock"
+              doc="Extracts the new clock from the GstMessage.
+The clock object returned remains valid until the message is freed.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_segment_start"
+              c:identifier="gst_message_parse_segment_start"
+              doc="Extracts the position and format from the segment start message.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_segment_done"
+              c:identifier="gst_message_parse_segment_done"
+              doc="Extracts the position and format from the segment start message.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_duration"
+              c:identifier="gst_message_parse_duration"
+              doc="Extracts the duration and format from the duration message. The duration
+might be GST_CLOCK_TIME_NONE, which indicates that the duration has
+changed. Applications should always use a query to retrieve the duration
+of a pipeline.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_async_start"
+              c:identifier="gst_message_parse_async_start"
+              doc="Extract the new_base_time from the async_start message.
+MT safe."
+              version="0.10.13">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_base_time"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_structure_change"
+              c:identifier="gst_message_parse_structure_change"
+              doc="completed
+Extracts the change type and completion status from the GstMessage.
+MT safe."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StructureChangeType" c:type="GstStructureChangeType*"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="Element" c:type="GstElement**"/>
+          </parameter>
+          <parameter name="busy" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_stream_status"
+              c:identifier="gst_message_parse_stream_status"
+              doc="Extracts the stream status type and owner the GstMessage. The returned
+owner remains valid for as long as the reference to @message is valid and
+should thus not be unreffed.
+MT safe."
+              version="0.10.24.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StreamStatusType" c:type="GstStreamStatusType*"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="Element" c:type="GstElement**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_stream_status_object"
+              c:identifier="gst_message_set_stream_status_object"
+              doc="Configures the object handling the streaming thread. This is usually a
+GstTask object but other objects might be added in the future."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stream_status_object"
+              c:identifier="gst_message_get_stream_status_object"
+              doc="Extracts the object managing the streaming thread from @message.
+This object is usually of type GstTask but other types can be added in the
+future. The object remains valid as long as @message is valid."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="parse_request_state"
+              c:identifier="gst_message_parse_request_state"
+              doc="Extract the requested state from the request_state message.
+MT safe."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="State" c:type="GstState*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_step_start"
+              c:identifier="gst_message_parse_step_start"
+              doc="Extract the values from step_start message.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="amount" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="flush" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="intermediate"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qos_values"
+              c:identifier="gst_message_set_qos_values"
+              doc="to get optimal quality.
+quality level of the element. The default maximum quality is 1000000.
+Set the QoS values that have been calculated/analysed from the QoS data
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="jitter" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="proportion" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="quality" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qos_stats"
+              c:identifier="gst_message_set_qos_stats"
+              doc="filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters
+will likely use GST_FORMAT_DEFAULT (samples).
+change to READY or a flushing operation.
+or a flushing operation.
+Set the QoS stats representing the history of the current continuous pipeline
+playback period.
+When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are
+invalid. Values of -1 for either @processed or @dropped mean unknown values.
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="processed" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="dropped" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos"
+              c:identifier="gst_message_parse_qos"
+              doc="Extract the timestamps and live status from the QoS message.
+The returned values give the running_time, stream_time, timestamp and
+duration of the dropped buffer. Values of GST_CLOCK_TIME_NONE mean unknown
+values.
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="running_time"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="stream_time"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="timestamp"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos_values"
+              c:identifier="gst_message_parse_qos_values"
+              doc="to get optimal quality.
+quality level of the element. The default maximum quality is 1000000.
+Extract the QoS values that have been calculated/analysed from the QoS data
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="jitter" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="proportion"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="quality" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_qos_stats"
+              c:identifier="gst_message_parse_qos_stats"
+              doc="filters will use GST_FORMAT_BUFFERS (frames). Audio sinks and audio filters
+will likely use GST_FORMAT_DEFAULT (samples).
+change to READY or a flushing operation.
+or a flushing operation.
+Extract the QoS stats representing the history of the current continuous
+pipeline playback period.
+When @format is @GST_FORMAT_UNDEFINED both @dropped and @processed are
+invalid. Values of -1 for either @processed or @dropped mean unknown values.
+MT safe."
+              version="0.10.29">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="processed"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+          <parameter name="dropped" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_structure"
+              c:identifier="gst_message_get_structure"
+              doc="Access the structure of the message.
+owned by the message, which means that you should not free it and
+that the pointer becomes invalid when you free the message.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="MessageClass" c:type="GstMessageClass">
+      <field name="mini_object_class" writable="1">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="MessageType"
+              doc="only receive this message in the PLAYING state and every time it sets a
+pipeline to PLAYING that is in the EOS state. The application can perform a
+flushing seek in the pipeline, which will undo the EOS state again.
+message it should stop playback of the pipeline and not assume that more
+data will be played.
+receives a buffering message in the PLAYING state for a non-live pipeline it
+must PAUSE the pipeline until the buffering completes, when the percentage
+field in the message is 100%. For live pipelines, no action must be
+performed and the buffering percentage can be used to inform the user about
+the progress.
+This message is deprecated.
+a clock. This message is used internally and
+never forwarded to the application.
+unusable. The pipeline will select a new clock on
+the next PLAYING state change. The application
+should set the pipeline to PAUSED and back to
+PLAYING when this message is received.
+message is used internally and never forwarded to the application.
+stops, errors, etc..
+via an application-specific element.
+documentation
+message is used internally and never forwarded to the application.
+message is forwarded to the application after all elements that posted
+can get the new duration with a duration query.
+change. This message is not forwarded to the application but is used
+change. The application will only receive this message from the toplevel
+change state. This message is a suggestion to the application which can
+The different message types that are available."
+              c:type="GstMessageType">
+      <member name="unknown" value="0" c:identifier="GST_MESSAGE_UNKNOWN"/>
+      <member name="eos" value="1" c:identifier="GST_MESSAGE_EOS"/>
+      <member name="error" value="2" c:identifier="GST_MESSAGE_ERROR"/>
+      <member name="warning" value="4" c:identifier="GST_MESSAGE_WARNING"/>
+      <member name="info" value="8" c:identifier="GST_MESSAGE_INFO"/>
+      <member name="tag" value="16" c:identifier="GST_MESSAGE_TAG"/>
+      <member name="buffering"
+              value="32"
+              c:identifier="GST_MESSAGE_BUFFERING"/>
+      <member name="state_changed"
+              value="64"
+              c:identifier="GST_MESSAGE_STATE_CHANGED"/>
+      <member name="state_dirty"
+              value="128"
+              c:identifier="GST_MESSAGE_STATE_DIRTY"/>
+      <member name="step_done"
+              value="256"
+              c:identifier="GST_MESSAGE_STEP_DONE"/>
+      <member name="clock_provide"
+              value="512"
+              c:identifier="GST_MESSAGE_CLOCK_PROVIDE"/>
+      <member name="clock_lost"
+              value="1024"
+              c:identifier="GST_MESSAGE_CLOCK_LOST"/>
+      <member name="new_clock"
+              value="2048"
+              c:identifier="GST_MESSAGE_NEW_CLOCK"/>
+      <member name="structure_change"
+              value="4096"
+              c:identifier="GST_MESSAGE_STRUCTURE_CHANGE"/>
+      <member name="stream_status"
+              value="8192"
+              c:identifier="GST_MESSAGE_STREAM_STATUS"/>
+      <member name="application"
+              value="16384"
+              c:identifier="GST_MESSAGE_APPLICATION"/>
+      <member name="element" value="32768" c:identifier="GST_MESSAGE_ELEMENT"/>
+      <member name="segment_start"
+              value="65536"
+              c:identifier="GST_MESSAGE_SEGMENT_START"/>
+      <member name="segment_done"
+              value="131072"
+              c:identifier="GST_MESSAGE_SEGMENT_DONE"/>
+      <member name="duration"
+              value="262144"
+              c:identifier="GST_MESSAGE_DURATION"/>
+      <member name="latency"
+              value="524288"
+              c:identifier="GST_MESSAGE_LATENCY"/>
+      <member name="async_start"
+              value="1048576"
+              c:identifier="GST_MESSAGE_ASYNC_START"/>
+      <member name="async_done"
+              value="2097152"
+              c:identifier="GST_MESSAGE_ASYNC_DONE"/>
+      <member name="request_state"
+              value="4194304"
+              c:identifier="GST_MESSAGE_REQUEST_STATE"/>
+      <member name="step_start"
+              value="8388608"
+              c:identifier="GST_MESSAGE_STEP_START"/>
+      <member name="qos" value="16777216" c:identifier="GST_MESSAGE_QOS"/>
+      <member name="any" value="-1" c:identifier="GST_MESSAGE_ANY"/>
+    </bitfield>
+    <record name="MiniObject"
+            c:type="GstMiniObject"
+            doc="Base class for refcounted lightweight objects.">
+      <field name="instance" writable="1">
+        <type name="GObject.TypeInstance" c:type="GTypeInstance"/>
+      </field>
+      <field name="refcount" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_mini_object_new"
+                   doc="Creates a new mini-object of the desired type.
+MT safe">
+        <return-value transfer-ownership="full">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gst_mini_object_copy"
+              doc="Creates a copy of the mini-object.
+MT safe">
+        <return-value transfer-ownership="full">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+      </method>
+      <method name="is_writable"
+              c:identifier="gst_mini_object_is_writable"
+              doc="Checks if a mini-object is writable.  A mini-object is writable
+if the reference count is one and the #GST_MINI_OBJECT_FLAG_READONLY
+flag is not set.  Modification of a mini-object should only be
+done after verifying that it is writable.
+MT safe">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="make_writable"
+              c:identifier="gst_mini_object_make_writable"
+              doc="Checks if a mini-object is writable.  If not, a writable copy is made and
+returned.  This gives away the reference to the original mini object,
+and returns a reference to the new object.
+MT safe">
+        <return-value transfer-ownership="full" doc="that is writable.">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+      </method>
+      <method name="ref"
+              c:identifier="gst_mini_object_ref"
+              doc="Increase the reference count of the mini-object.
+Note that the refcount affects the writeability
+of @mini-object, see gst_mini_object_is_writable(). It is
+important to note that keeping additional references to
+GstMiniObject instances can potentially increase the number
+of memcpy operations in a pipeline, especially if the miniobject
+is a #GstBuffer.">
+        <return-value transfer-ownership="full">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gst_mini_object_unref"
+              doc="Decreases the reference count of the mini-object, possibly freeing
+the mini-object.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="replace"
+              c:identifier="gst_mini_object_replace"
+              doc="Modifies a pointer to point to a new mini-object.  The modification
+is done atomically, and the reference counts are updated correctly.
+Either @newdata and the value pointed to by @olddata may be NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="newdata" transfer-ownership="none">
+            <type name="MiniObject" c:type="GstMiniObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="MiniObjectClass" c:type="GstMiniObjectClass">
+      <field name="type_class" writable="1">
+        <type name="GObject.TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="copy" writable="1">
+        <type name="MiniObjectCopyFunction"
+              c:type="GstMiniObjectCopyFunction"/>
+      </field>
+      <field name="finalize" writable="1">
+        <type name="MiniObjectFinalizeFunction"
+              c:type="GstMiniObjectFinalizeFunction"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <callback name="MiniObjectCopyFunction"
+              c:type="GstMiniObjectCopyFunction"
+              doc="Virtual function prototype for methods to create copies of instances.">
+      <return-value transfer-ownership="full">
+        <type name="MiniObject" c:type="GstMiniObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="MiniObjectFinalizeFunction"
+              c:type="GstMiniObjectFinalizeFunction"
+              doc="Virtual function prototype for methods to free ressources used by
+mini-objects. Subclasses of the mini object are allowed to revive the
+passed object by doing a gst_mini_object_ref(). If the object is not
+revived after the finalize function, the memory associated with the
+object is freed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="MiniObjectFlags"
+              doc="Flags for the padtemplate"
+              c:type="GstMiniObjectFlags">
+      <member name="readonly"
+              value="1"
+              c:identifier="GST_MINI_OBJECT_FLAG_READONLY"/>
+      <member name="last" value="16" c:identifier="GST_MINI_OBJECT_FLAG_LAST"/>
+    </bitfield>
+    <constant name="NSECOND" value="0">
+      <type name="int"/>
+    </constant>
+    <class name="Object"
+           c:type="GstObject"
+           doc="GStreamer base object class."
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GstObject"
+           glib:get-type="gst_object_get_type"
+           glib:type-struct="ObjectClass">
+      <function name="default_deep_notify"
+                c:identifier="gst_object_default_deep_notify"
+                doc="NULL to show all changes.
+A default deep_notify signal callback for an object. The user data
+should contain a pointer to an array of strings that should be excluded
+from the notify. The default handler will print the new value of the property
+using g_print.
+MT safe. This function grabs and releases @object&apos;s LOCK for getting its
+path string.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="orig" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+          <parameter name="excluded_props" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="ref"
+                c:identifier="gst_object_ref"
+                doc="Increments the reference count on @object. This function
+does not take the lock on @object because it relies on
+atomic refcounting.
+This object returns the input parameter to ease writing
+constructs like :
+result = gst_object_ref (object-&gt;parent);">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="unref"
+                c:identifier="gst_object_unref"
+                doc="Decrements the reference count on @object.  If reference count hits
+zero, destroy @object. This function does not take the lock
+on @object as it relies on atomic refcounting.
+The unref method should never be called with the LOCK held since
+this might deadlock the dispose function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="ref_sink"
+                c:identifier="gst_object_ref_sink"
+                doc="Increase the reference count of @object, and possibly remove the floating
+reference, if @object has a floating reference.
+In other words, if the object is floating, then this call &quot;assumes ownership&quot;
+of the floating reference, converting it to a normal reference by clearing
+the floating flag while leaving the reference count unchanged. If the object
+is not floating, then this call adds a new normal reference increasing the
+reference count by one.
+MT safe. This function grabs and releases @object lock."
+                version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="sink"
+                c:identifier="gst_object_sink"
+                doc="If @object was floating, the #GST_OBJECT_FLOATING flag is removed
+and @object is unreffed. When @object was not floating,
+this function does nothing.
+Any newly created object has a refcount of 1 and is floating.
+This function should be used when creating a new object to
+symbolically &apos;take ownership&apos; of @object. This done by first doing a
+gst_object_ref() to keep a reference to @object and then gst_object_sink()
+to remove and unref any floating references to @object.
+Use gst_object_set_parent() to have this done for you.
+MT safe. This function grabs and releases @object lock.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="check_uniqueness"
+                c:identifier="gst_object_check_uniqueness"
+                doc="Checks to see if there is any object named @name in @list. This function
+does not do any locking of any kind. You might want to protect the
+provided list with the lock of the owner of the list. This function
+will lock each #GstObject in the list to compare the name, so be
+carefull when passing a list with a locked object.
+FALSE if it does.
+MT safe. Grabs and releases the LOCK of each object in the list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="save_thyself" invoker="save_thyself">
+        <return-value transfer-ownership="full">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="restore_thyself" invoker="restore_thyself">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_name"
+              c:identifier="gst_object_set_name"
+              doc="Sets the name of @object, or gives @object a guaranteed unique
+name (if @name is NULL).
+This function makes a copy of the provided name, so the caller
+retains ownership of the name it sent.
+a parent cannot be renamed, this function returns FALSE in those
+cases.
+MT safe.  This function grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="gst_object_get_name"
+              doc="Returns a copy of the name of @object.
+Caller should g_free() the return value after usage.
+For a nameless object, this returns NULL, which you can safely g_free()
+as well.
+MT safe. This function grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_name_prefix"
+              c:identifier="gst_object_set_name_prefix"
+              doc="Sets the name prefix of @object to @name_prefix.
+This function makes a copy of the provided name prefix, so the caller
+retains ownership of the name prefix it sent.
+MT safe.  This function grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name_prefix" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name_prefix"
+              c:identifier="gst_object_get_name_prefix"
+              doc="Returns a copy of the name prefix of @object.
+Caller should g_free() the return value after usage.
+For a prefixless object, this returns NULL, which you can safely g_free()
+as well.
+MT safe. This function grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_parent"
+              c:identifier="gst_object_set_parent"
+              doc="Sets the parent of @object to @parent. The object&apos;s reference count will
+be incremented, and any floating reference will be removed (see gst_object_sink()).
+This function causes the parent-set signal to be emitted when the parent
+was successfully set.
+already had a parent or @object and @parent are the same.
+MT safe. Grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent"
+              c:identifier="gst_object_get_parent"
+              doc="Returns the parent of @object. This function increases the refcount
+of the parent object so you should gst_object_unref() it after usage.
+parent. unref after usage.
+MT safe. Grabs and releases @object&apos;s LOCK.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="GstObject*"/>
+        </return-value>
+      </method>
+      <method name="unparent"
+              c:identifier="gst_object_unparent"
+              doc="Clear the parent of @object, removing the associated reference.
+This function decreases the refcount of @object.
+MT safe. Grabs and releases @object&apos;s lock.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="has_ancestor"
+              c:identifier="gst_object_has_ancestor"
+              doc="Check if @object has an ancestor @ancestor somewhere up in
+the hierarchy.
+MT safe. Grabs and releases @object&apos;s locks.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace"
+              c:identifier="gst_object_replace"
+              doc="Unrefs the #GstObject pointed to by @oldobj, refs @newobj and
+puts @newobj in *@oldobj. Be carefull when calling this
+function, it does not take any locks. You might want to lock
+the object owning @oldobj pointer before calling this
+function.
+Make sure not to LOCK @oldobj because it might be unreffed
+which could cause a deadlock when it is disposed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="newobj" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_path_string"
+              c:identifier="gst_object_get_path_string"
+              doc="Generates a string describing the path of @object in
+the object hierarchy. Only useful (or used) for debugging.
+g_free() the string after usage.
+MT safe. Grabs and releases the #GstObject&apos;s LOCK for all objects
+in the hierarchy.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="save_thyself"
+              c:identifier="gst_object_save_thyself"
+              doc="Saves @object into the parent XML node.">
+        <return-value transfer-ownership="full">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="restore_thyself"
+              c:identifier="gst_object_restore_thyself"
+              doc="Restores @object with the data from the parent XML node.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="default_error"
+              c:identifier="gst_object_default_error"
+              doc="A default error function.
+The default handler will simply print the error string using g_print.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error" transfer-ownership="none">
+            <type name="GLib.Error" c:type="GError*"/>
+          </parameter>
+          <parameter name="debug" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="name" writable="1" construct="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <field name="object">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="refcount">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="name_prefix">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="parent">
+        <type name="Object" c:type="GstObject*"/>
+      </field>
+      <field name="flags">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="_gst_reserved">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <glib:signal name="deep-notify"
+                   doc="The deep notify signal is used to be notified of property changes. It is
+typically attached to the toplevel bin to receive notifications from all
+the elements contained in that bin.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="prop_object" transfer-ownership="none">
+            <type name="Object" c:type="GstObject"/>
+          </parameter>
+          <parameter name="prop" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParam"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="object-saved"
+                   doc="Trigered whenever a new object is saved to XML. You can connect to this
+signal to insert custom XML tags into the core XML.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xml_node" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="parent-set"
+                   doc="Emitted when the parent of an object is set.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="parent-unset"
+                   doc="Emitted when the parent of an object is unset.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ObjectClass"
+            c:type="GstObjectClass"
+            glib:is-gtype-struct-for="Object"
+            doc="GStreamer base object class.">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="path_string_separator">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="signal_object">
+        <type name="GObject.Object" c:type="GObject*"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="parent_set">
+        <callback name="parent_set" c:type="parent_set">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parent_unset">
+        <callback name="parent_unset" c:type="parent_unset">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_saved">
+        <callback name="object_saved" c:type="object_saved">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deep_notify">
+        <callback name="deep_notify" c:type="deep_notify">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="orig" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="pspec" transfer-ownership="none">
+              <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="save_thyself">
+        <callback name="save_thyself" c:type="save_thyself">
+          <return-value transfer-ownership="full">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="restore_thyself">
+        <callback name="restore_thyself" c:type="restore_thyself">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="self" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="ObjectFlags"
+              doc="not assigned to a bin)
+The standard flags that an gstobject may have."
+              c:type="GstObjectFlags">
+      <member name="disposing" value="1" c:identifier="GST_OBJECT_DISPOSING"/>
+      <member name="floating" value="2" c:identifier="GST_OBJECT_FLOATING"/>
+      <member name="flag_last" value="16" c:identifier="GST_OBJECT_FLAG_LAST"/>
+    </bitfield>
+    <constant name="PARAM_CONTROLLABLE" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_MUTABLE_PAUSED" value="8">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_MUTABLE_PLAYING" value="16">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_MUTABLE_READY" value="4">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_USER_SHIFT" value="256">
+      <type name="int"/>
+    </constant>
+    <class name="Pad"
+           c:type="GstPad"
+           doc="the pad.
+the data used in streaming.
+The #GstPad structure. Use the functions to update the variables."
+           parent="Object"
+           glib:type-name="GstPad"
+           glib:get-type="gst_pad_get_type"
+           glib:type-struct="PadClass">
+      <constructor name="new"
+                   c:identifier="gst_pad_new"
+                   doc="Creates a new pad with the given name in the given direction.
+If name is NULL, a guaranteed unique name (across all pads)
+will be assigned.
+This function makes a copy of the name so you can safely free the name.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_template"
+                   c:identifier="gst_pad_new_from_template"
+                   doc="Creates a new pad with the given name from the given template.
+If name is NULL, a guaranteed unique name (across all pads)
+will be assigned.
+This function makes a copy of the name so you can safely free the name.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="PadTemplate" c:type="GstPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_static_template"
+                   c:identifier="gst_pad_new_from_static_template"
+                   doc="Creates a new pad with the given name from the given static template.
+If name is NULL, a guaranteed unique name (across all pads)
+will be assigned.
+This function makes a copy of the name so you can safely free the name.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+        <parameters>
+          <parameter name="templ" transfer-ownership="none">
+            <type name="StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="load_and_link"
+                c:identifier="gst_pad_load_and_link"
+                doc="Reads the pad definition from the XML node and links the given pad
+in the element to a pad of an element up in the hierarchy.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_direction"
+              c:identifier="gst_pad_get_direction"
+              doc="Gets the direction of the pad. The direction of the pad is
+decided at construction time so this function does not take
+the LOCK.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="PadDirection" c:type="GstPadDirection"/>
+        </return-value>
+      </method>
+      <method name="set_active"
+              c:identifier="gst_pad_set_active"
+              doc="Activates or deactivates the given pad.
+Normally called from within core state change functions.
+If @active, makes sure the pad is active. If it is already active, either in
+push or pull mode, just return. Otherwise dispatches to the pad&apos;s activate
+function to perform the actual activation.
+If not @active, checks the pad&apos;s current mode and calls
+gst_pad_activate_push() or gst_pad_activate_pull(), as appropriate, with a
+FALSE argument.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_active"
+              c:identifier="gst_pad_is_active"
+              doc="Query if a pad is active
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="activate_pull"
+              c:identifier="gst_pad_activate_pull"
+              doc="Activates or deactivates the given pad in pull mode via dispatching to the
+pad&apos;s activatepullfunc. For use from within pad activation functions only.
+When called on sink pads, will first proxy the call to the peer pad, which
+is expected to activate its internally linked pads from within its
+activate_pull function.
+If you don&apos;t know what this is, you probably don&apos;t want to call it.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate_push"
+              c:identifier="gst_pad_activate_push"
+              doc="Activates or deactivates the given pad in push mode via dispatching to the
+pad&apos;s activatepushfunc. For use from within pad activation functions only.
+If you don&apos;t know what this is, you probably don&apos;t want to call it.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocked"
+              c:identifier="gst_pad_set_blocked"
+              doc="Blocks or unblocks the dataflow on a pad. This function is
+a shortcut for gst_pad_set_blocked_async() with a NULL
+callback.
+wrong parameters were passed or the pad was already in the requested state.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocked" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocked_async"
+              c:identifier="gst_pad_set_blocked_async"
+              doc="operation succeeds
+Blocks or unblocks the dataflow on a pad. The provided callback
+is called when the operation succeeds; this happens right before the next
+attempt at pushing a buffer on the pad.
+This can take a while as the pad can only become blocked when real dataflow
+is happening.
+When the pipeline is stalled, for example in PAUSED, this can
+take an indeterminate amount of time.
+You can pass NULL as the callback to make this call block. Be careful with
+this blocking call as it might not return for reasons stated above.
+wrong parameters were passed or the pad was already in the requested state.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocked" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="3">
+            <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_blocked_async_full"
+              c:identifier="gst_pad_set_blocked_async_full"
+              doc="operation succeeds
+Blocks or unblocks the dataflow on a pad. The provided callback
+is called when the operation succeeds; this happens right before the next
+attempt at pushing a buffer on the pad.
+This can take a while as the pad can only become blocked when real dataflow
+is happening.
+When the pipeline is stalled, for example in PAUSED, this can
+take an indeterminate amount of time.
+You can pass NULL as the callback to make this call block. Be careful with
+this blocking call as it might not return for reasons stated above.
+wrong parameters were passed or the pad was already in the requested state.
+MT safe."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocked" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy_data"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_blocked"
+              c:identifier="gst_pad_is_blocked"
+              doc="Checks if the pad is blocked or not. This function returns the
+last requested state of the pad. It is not certain that the pad
+is actually blocking at this point (see gst_pad_is_blocking()).
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_blocking"
+              c:identifier="gst_pad_is_blocking"
+              doc="Checks if the pad is blocking or not. This is a guaranteed state
+of whether the pad is actually blocking on a #GstBuffer or a #GstEvent.
+MT safe."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_element_private"
+              c:identifier="gst_pad_set_element_private"
+              doc="Set the given private data gpointer on the pad.
+This function can only be used by the element that owns the pad.
+No locking is performed in this function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priv" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_element_private"
+              c:identifier="gst_pad_get_element_private"
+              doc="Gets the private data of a pad.
+No locking is performed in this function.">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_pad_template"
+              c:identifier="gst_pad_get_pad_template"
+              doc="Gets the template for @pad.
+if this pad has no template.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+      </method>
+      <method name="set_bufferalloc_function"
+              c:identifier="gst_pad_set_bufferalloc_function"
+              doc="Sets the given bufferalloc function for the pad. Note that the
+bufferalloc function can only be set on sinkpads.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bufalloc" transfer-ownership="none" scope="call">
+            <type name="PadBufferAllocFunction"
+                  c:type="GstPadBufferAllocFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="alloc_buffer"
+              c:identifier="gst_pad_alloc_buffer"
+              doc="Allocates a new, empty buffer optimized to push to pad @pad.  This
+function only works if @pad is a source pad and has a peer.
+A new, empty #GstBuffer will be put in the @buf argument.
+You need to check the caps of the buffer after performing this
+function and renegotiate to the format if needed. If the caps changed, it is
+possible that the buffer returned in @buf is not of the right size for the
+new format, @buf needs to be unreffed and reallocated if this is the case.
+result code other than #GST_FLOW_OK is an error and @buf should
+not be used.
+An error can occur if the pad is not connected or when the downstream
+peer elements cannot provide an acceptable buffer.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="alloc_buffer_and_set_caps"
+              c:identifier="gst_pad_alloc_buffer_and_set_caps"
+              doc="In addition to the function gst_pad_alloc_buffer(), this function
+automatically calls gst_pad_set_caps() when the caps of the
+newly allocated buffer are different from the @pad caps.
+After a renegotiation, the size of the new buffer returned in @buf could
+be of the wrong size for the new format and must be unreffed an reallocated
+in that case.
+result code other than #GST_FLOW_OK is an error and @buf should
+not be used.
+An error can occur if the pad is not connected or when the downstream
+peer elements cannot provide an acceptable buffer.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+          <parameter name="buf" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activate_function"
+              c:identifier="gst_pad_set_activate_function"
+              doc="Sets the given activate function for @pad. The activate function will
+dispatch to gst_pad_activate_push() or gst_pad_activate_pull() to perform
+the actual activation. Only makes sense to set on sink pads.
+Call this function if your sink pad can start a pull-based task.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activate" transfer-ownership="none" scope="call">
+            <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activatepull_function"
+              c:identifier="gst_pad_set_activatepull_function"
+              doc="Sets the given activate_pull function for the pad. An activate_pull function
+prepares the element and any upstream connections for pulling. See XXX
+part-activation.txt for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activatepull"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="PadActivateModeFunction"
+                  c:type="GstPadActivateModeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activatepush_function"
+              c:identifier="gst_pad_set_activatepush_function"
+              doc="Sets the given activate_push function for the pad. An activate_push function
+prepares the element for pushing. See XXX part-activation.txt for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activatepush"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="PadActivateModeFunction"
+                  c:type="GstPadActivateModeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_chain_function"
+              c:identifier="gst_pad_set_chain_function"
+              doc="Sets the given chain function for the pad. The chain function is called to
+process a #GstBuffer input buffer. see #GstPadChainFunction for more details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="chain" transfer-ownership="none" scope="call">
+            <type name="PadChainFunction" c:type="GstPadChainFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_chain_list_function"
+              c:identifier="gst_pad_set_chain_list_function"
+              doc="Sets the given chain list function for the pad. The chainlist function is
+called to process a #GstBufferList input buffer list. See
+#GstPadChainListFunction for more details."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="chainlist" transfer-ownership="none" scope="call">
+            <type name="PadChainListFunction"
+                  c:type="GstPadChainListFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_getrange_function"
+              c:identifier="gst_pad_set_getrange_function"
+              doc="Sets the given getrange function for the pad. The getrange function is
+called to produce a new #GstBuffer to start the processing pipeline. see
+#GstPadGetRangeFunction for a description of the getrange function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="get" transfer-ownership="none" scope="call">
+            <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_checkgetrange_function"
+              c:identifier="gst_pad_set_checkgetrange_function"
+              doc="Sets the given checkgetrange function for the pad. Implement this function
+on a pad if you dynamically support getrange based scheduling on the pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="check" transfer-ownership="none" scope="call">
+            <type name="PadCheckGetRangeFunction"
+                  c:type="GstPadCheckGetRangeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_event_function"
+              c:identifier="gst_pad_set_event_function"
+              doc="Sets the given event handler for the pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none" scope="call">
+            <type name="PadEventFunction" c:type="GstPadEventFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_link_function"
+              c:identifier="gst_pad_set_link_function"
+              doc="Sets the given link function for the pad. It will be called when
+the pad is linked with another pad.
+The return value #GST_PAD_LINK_OK should be used when the connection can be
+made.
+The return value #GST_PAD_LINK_REFUSED should be used when the connection
+cannot be made for some reason.
+If @link is installed on a source pad, it should call the #GstPadLinkFunction
+of the peer sink pad, if present.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="link" transfer-ownership="none" scope="call">
+            <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_unlink_function"
+              c:identifier="gst_pad_set_unlink_function"
+              doc="Sets the given unlink function for the pad. It will be called
+when the pad is unlinked.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="unlink" transfer-ownership="none" scope="call">
+            <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_link"
+              c:identifier="gst_pad_can_link"
+              doc="Checks if the source pad and the sink pad are compatible so they can be
+linked.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="link"
+              c:identifier="gst_pad_link"
+              doc="Links the source pad and the sink pad.
+what went wrong.
+MT Safe.">
+        <return-value transfer-ownership="full">
+          <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unlink"
+              c:identifier="gst_pad_unlink"
+              doc="Unlinks the source pad from the sink pad. Will emit the #GstPad::unlinked
+signal on both pads.
+the pads were not linked together.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sinkpad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_linked"
+              c:identifier="gst_pad_is_linked"
+              doc="Checks if a @pad is linked to another pad or not.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_peer"
+              c:identifier="gst_pad_get_peer"
+              doc="Gets the peer of @pad. This function refs the peer pad so
+you need to unref it after use.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Pad" c:type="GstPad*"/>
+        </return-value>
+      </method>
+      <method name="set_getcaps_function"
+              c:identifier="gst_pad_set_getcaps_function"
+              doc="Sets the given getcaps function for the pad. @getcaps should return the
+allowable caps for a pad in the context of the element&apos;s state, its link to
+other elements, and the devices or files it has opened. These caps must be a
+subset of the pad template caps. In the NULL state with no links, @getcaps
+should ideally return the same caps as the pad template. In rare
+circumstances, an object property can affect the caps returned by @getcaps,
+but this is discouraged.
+You do not need to call this function if @pad&apos;s allowed caps are always the
+same as the pad template caps. This can only be true if the padtemplate
+has fixed simple caps.
+For most filters, the caps returned by @getcaps is directly affected by the
+allowed caps on other pads. For demuxers and decoders, the caps returned by
+the srcpad&apos;s getcaps function is directly related to the stream data. Again,
+helps with autoplugging.
+Note that the return value from @getcaps is owned by the caller, so the
+caller should unref the caps after usage.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="getcaps" transfer-ownership="none" scope="call">
+            <type name="PadGetCapsFunction" c:type="GstPadGetCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_acceptcaps_function"
+              c:identifier="gst_pad_set_acceptcaps_function"
+              doc="Sets the given acceptcaps function for the pad.  The acceptcaps function
+will be called to check if the pad can accept the given caps. Setting the
+acceptcaps function to NULL restores the default behaviour of allowing
+any caps that matches the caps from gst_pad_get_caps.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="acceptcaps" transfer-ownership="none" scope="call">
+            <type name="PadAcceptCapsFunction"
+                  c:type="GstPadAcceptCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fixatecaps_function"
+              c:identifier="gst_pad_set_fixatecaps_function"
+              doc="Sets the given fixatecaps function for the pad.  The fixatecaps function
+will be called whenever the default values for a GstCaps needs to be
+filled in.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fixatecaps" transfer-ownership="none" scope="call">
+            <type name="PadFixateCapsFunction"
+                  c:type="GstPadFixateCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_setcaps_function"
+              c:identifier="gst_pad_set_setcaps_function"
+              doc="Sets the given setcaps function for the pad.  The setcaps function
+will be called whenever a buffer with a new media type is pushed or
+pulled from the pad. The pad/element needs to update its internal
+structures to process the new media type. If this new type is not
+acceptable, the setcaps function should return FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setcaps" transfer-ownership="none" scope="call">
+            <type name="PadSetCapsFunction" c:type="GstPadSetCapsFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pad_template_caps"
+              c:identifier="gst_pad_get_pad_template_caps"
+              doc="Gets the capabilities for @pad&apos;s template.
+reference on the caps, make a copy (see gst_caps_copy ()).">
+        <return-value transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_caps_reffed"
+              c:identifier="gst_pad_get_caps_reffed"
+              doc="Gets the capabilities this pad can produce or consume. Preferred function if
+one only wants to read or intersect the caps."
+              version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_pad_get_caps"
+              doc="Gets the capabilities this pad can produce or consume.
+Note that this method doesn&apos;t necessarily return the caps set by
+gst_pad_set_caps() - use GST_PAD_CAPS() for that instead.
+gst_pad_get_caps returns all possible caps a pad can operate with, using
+the pad&apos;s get_caps function;
+this returns the pad template caps if not explicitly set.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="fixate_caps"
+              c:identifier="gst_pad_fixate_caps"
+              doc="Fixate a caps on the given pad. Modifies the caps in place, so you should
+make sure that the caps are actually writable (see gst_caps_make_writable()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_caps"
+              c:identifier="gst_pad_accept_caps"
+              doc="Check if the given pad accepts the caps.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_caps"
+              c:identifier="gst_pad_set_caps"
+              doc="Sets the capabilities of this pad. The caps must be fixed. Any previous
+caps on the pad will be unreffed. This function refs the caps so you should
+unref if as soon as you don&apos;t need it anymore.
+It is possible to set NULL caps, which will make the pad unnegotiated
+again.
+or bad parameters were provided to this function.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peer_get_caps_reffed"
+              c:identifier="gst_pad_peer_get_caps_reffed"
+              doc="Gets the capabilities of the peer connected to this pad. Preferred function
+if one only wants to read or intersect the caps."
+              version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="peer_get_caps"
+              c:identifier="gst_pad_peer_get_caps"
+              doc="Gets the capabilities of the peer connected to this pad. Similar to
+gst_pad_get_caps().
+gst_caps_unref() to get rid of it. This function returns %NULL if there is
+no peer pad.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="peer_accept_caps"
+              c:identifier="gst_pad_peer_accept_caps"
+              doc="Check if the peer of @pad accepts @caps. If @pad has no peer, this function
+returns TRUE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_allowed_caps"
+              c:identifier="gst_pad_get_allowed_caps"
+              doc="Gets the capabilities of the allowed media types that can flow through
+The allowed capabilities is calculated as the intersection of the results of
+calling gst_pad_get_caps() on @pad and its peer. The caller owns a reference
+on the resulting caps.
+longer need it. This function returns NULL when @pad has no peer.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="get_negotiated_caps"
+              c:identifier="gst_pad_get_negotiated_caps"
+              doc="Gets the capabilities of the media type that currently flows through @pad
+and its peer.
+This function can be used on both src and sinkpads. Note that srcpads are
+always negotiated before sinkpads so it is possible that the negotiated caps
+on the srcpad do not match the negotiated caps of the peer.
+you no longer need it. This function returns NULL when the @pad has no
+peer or is not negotiated yet.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_pad_push"
+              doc="Pushes a buffer to the peer of @pad.
+This function will call an installed pad block before triggering any
+installed pad probes.
+If the caps on @buffer are different from the currently configured caps on
+gst_pad_set_setcaps_function()). In case of failure to renegotiate the new
+format, this function returns #GST_FLOW_NOT_NEGOTIATED.
+The function proceeds calling gst_pad_chain() on the peer pad and returns
+the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will
+be returned.
+In all cases, success or failure, the caller loses its reference to @buffer
+after calling this function.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_list"
+              c:identifier="gst_pad_push_list"
+              doc="Pushes a buffer list to the peer of @pad.
+This function will call an installed pad block before triggering any
+installed pad probes.
+If the caps on the first buffer in the first group of @list are different
+from the currently configured caps on @pad, this function will call any
+installed setcaps function on @pad (see gst_pad_set_setcaps_function()). In
+case of failure to renegotiate the new format, this function returns
+#GST_FLOW_NOT_NEGOTIATED.
+If there are any probes installed on @pad every group of the buffer list
+will be merged into a normal #GstBuffer and pushed via gst_pad_push and the
+buffer list will be unreffed.
+The function proceeds calling the chain function on the peer pad and returns
+the value from that function. If @pad has no peer, #GST_FLOW_NOT_LINKED will
+be returned. If the peer pad does not have any installed chainlist function
+every group buffer of the list will be merged into a normal #GstBuffer and
+chained via gst_pad_chain().
+In all cases, success or failure, the caller loses its reference to @list
+after calling this function.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="check_pull_range"
+              c:identifier="gst_pad_check_pull_range"
+              doc="Checks if a gst_pad_pull_range() can be performed on the peer
+source pad. This function is used by plugins that want to check
+if they can use random access on the peer source pad.
+The peer sourcepad can implement a custom #GstPadCheckGetRangeFunction
+if it needs to perform some logic to determine if pull_range is
+possible.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pull_range"
+              c:identifier="gst_pad_pull_range"
+              doc="Pulls a @buffer from the peer pad.
+This function will first trigger the pad block signal if it was
+installed.
+When @pad is not linked #GST_FLOW_NOT_LINKED is returned else this
+function returns the result of gst_pad_get_range() on the peer pad.
+See gst_pad_get_range() for a list of return values and for the
+semantics of the arguments of this function.
+configured on @pad. Renegotiation within a running pull-mode pipeline is not
+supported.
+When this function returns #GST_FLOW_OK, @buffer will contain a valid
+#GstBuffer that should be freed with gst_buffer_unref() after usage.
+#GST_FLOW_OK is returned.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push_event"
+              c:identifier="gst_pad_push_event"
+              doc="Sends the event to the peer of the given pad. This function is
+mainly used by elements to send events to their peer
+elements.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="event_default"
+              c:identifier="gst_pad_event_default"
+              doc="Invokes the default event handler for the given pad. End-of-stream and
+discontinuity events are handled specially, and then the event is sent to all
+pads internally linked to @pad. Note that if there are many possible sink
+pads that are internally linked to @pad, only one will be sent an event.
+Multi-sinkpad elements should implement custom event handlers.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="chain"
+              c:identifier="gst_pad_chain"
+              doc="Chain a buffer to @pad.
+The function returns #GST_FLOW_WRONG_STATE if the pad was flushing.
+If the caps on @buffer are different from the current caps on @pad, this
+function will call any setcaps function (see gst_pad_set_setcaps_function())
+installed on @pad. If the new caps are not acceptable for @pad, this
+function returns #GST_FLOW_NOT_NEGOTIATED.
+The function proceeds calling the chain function installed on @pad (see
+gst_pad_set_chain_function()) and the return value of that function is
+returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no
+chain function.
+In all cases, success or failure, the caller loses its reference to @buffer
+after calling this function.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="chain_list"
+              c:identifier="gst_pad_chain_list"
+              doc="Chain a bufferlist to @pad.
+The function returns #GST_FLOW_WRONG_STATE if the pad was flushing.
+If the caps on the first buffer of @list are different from the current
+caps on @pad, this function will call any setcaps function
+(see gst_pad_set_setcaps_function()) installed on @pad. If the new caps
+are not acceptable for @pad, this function returns #GST_FLOW_NOT_NEGOTIATED.
+The function proceeds calling the chainlist function installed on @pad (see
+gst_pad_set_chain_list_function()) and the return value of that function is
+returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if @pad has no
+chainlist function.
+In all cases, success or failure, the caller loses its reference to @list
+after calling this function.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="BufferList" c:type="GstBufferList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_range"
+              c:identifier="gst_pad_get_range"
+              doc="When @pad is flushing this function returns #GST_FLOW_WRONG_STATE
+immediatly.
+Calls the getrange function of @pad, see #GstPadGetRangeFunction for a
+description of a getrange function. If @pad has no getrange function
+installed (see gst_pad_set_getrange_function()) this function returns
+#GST_FLOW_NOT_SUPPORTED.
+This is a lowlevel function. Usualy gst_pad_pull_range() is used.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_event"
+              c:identifier="gst_pad_send_event"
+              doc="Sends the event to the pad. This function can be used
+by applications to send events in the pipeline.
+If @pad is a source pad, @event should be an upstream event. If @pad is a
+sink pad, @event should be a downstream event. For example, you would not
+send a #GST_EVENT_EOS on a src pad; EOS events only propagate downstream.
+Furthermore, some downstream events have to be serialized with data flow,
+like EOS, while some can travel out-of-band, like #GST_EVENT_FLUSH_START. If
+the event needs to be serialized with data flow, this function will take the
+pad&apos;s stream lock while calling its event function.
+To find out whether an event type is upstream, downstream, or downstream and
+serialized, see #GstEventTypeFlags, gst_event_type_get_flags(),
+#GST_EVENT_IS_UPSTREAM, #GST_EVENT_IS_DOWNSTREAM, and
+#GST_EVENT_IS_SERIALIZED. Note that in practice that an application or
+plugin doesn&apos;t need to bother itself with this information; the core handles
+all necessary locks and checks.
+This function takes owership of the provided event so you should
+gst_event_ref() it if you want to reuse the event after this call.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Event" c:type="GstEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_task"
+              c:identifier="gst_pad_start_task"
+              doc="Starts a task that repeatedly calls @func with @data. This function
+is mostly used in pad activation functions to start the dataflow.
+The #GST_PAD_STREAM_LOCK of @pad will automatically be acquired
+before @func is called.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="TaskFunction" c:type="GstTaskFunction"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pause_task"
+              c:identifier="gst_pad_pause_task"
+              doc="Pause the task of @pad. This function will also wait until the
+function executed by the task is finished if this function is not
+called from the task function.
+has no task.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="stop_task"
+              c:identifier="gst_pad_stop_task"
+              doc="Stop the task of @pad. This function will also make sure that the
+function executed by the task will effectively stop if not called
+from the GstTaskFunction.
+This function will deadlock if called from the GstTaskFunction of
+the task. Use gst_task_pause() instead.
+Regardless of whether the pad has a task, the stream lock is acquired and
+released so as to ensure that streaming through this pad has finished.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_internal_link_function"
+              c:identifier="gst_pad_set_internal_link_function"
+              doc="Sets the given internal link function for the pad."
+              deprecated="Use the thread-safe gst_pad_set_iterate_internal_links_function()">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="intlink" transfer-ownership="none" scope="call">
+            <type name="PadIntLinkFunction" c:type="GstPadIntLinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_internal_links"
+              c:identifier="gst_pad_get_internal_links"
+              doc="Gets a list of pads to which the given pad is linked to
+inside of the parent element.
+The caller must free this list after use.
+Not MT safe.
+could become invalid by the time the application accesses them. It&apos;s also
+possible that the list changes while handling the pads, which the caller of
+this function is unable to know. Use the thread-safe
+gst_pad_iterate_internal_links() instead."
+              deprecated="This function does not ref the pads in the list so that they">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_internal_links_default"
+              c:identifier="gst_pad_get_internal_links_default"
+              doc="Gets a list of pads to which the given pad is linked to
+inside of the parent element.
+This is the default handler, and thus returns a list of all of the
+pads inside the parent element with opposite direction.
+The caller must free this list after use with g_list_free().
+Not MT safe.
+could become invalid by the time the application accesses them. It&apos;s also
+possible that the list changes while handling the pads, which the caller of
+this function is unable to know. Use the thread-safe
+gst_pad_iterate_internal_links_default() instead."
+              deprecated="This function does not ref the pads in the list so that they">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="set_iterate_internal_links_function"
+              c:identifier="gst_pad_set_iterate_internal_links_function"
+              doc="Sets the given internal link iterator function for the pad."
+              version="0.10.21">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iterintlink" transfer-ownership="none" scope="call">
+            <type name="PadIterIntLinkFunction"
+                  c:type="GstPadIterIntLinkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iterate_internal_links"
+              c:identifier="gst_pad_iterate_internal_links"
+              doc="Gets an iterator for the pads to which the given pad is linked to inside
+of the parent element.
+Each #GstPad element yielded by the iterator will have its refcount increased,
+so unref after use.
+iterator function configured. Use gst_iterator_free() after usage."
+              version="0.10.21">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="iterate_internal_links_default"
+              c:identifier="gst_pad_iterate_internal_links_default"
+              doc="Iterate the list of pads to which the given pad is linked to inside of
+the parent element.
+This is the default handler, and thus returns an iterator of all of the
+pads inside the parent element with opposite direction.
+The caller must free this iterator after use with gst_iterator_free().
+returned pad with gst_object_unref()."
+              version="0.10.21">
+        <return-value transfer-ownership="full">
+          <type name="Iterator" c:type="GstIterator*"/>
+        </return-value>
+      </method>
+      <method name="set_query_type_function"
+              c:identifier="gst_pad_set_query_type_function"
+              doc="Set the given query type function for the pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_func" transfer-ownership="none" scope="call">
+            <type name="PadQueryTypeFunction"
+                  c:type="GstPadQueryTypeFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_query_types"
+              c:identifier="gst_pad_get_query_types"
+              doc="Get an array of supported queries that can be performed
+on this pad.">
+        <return-value transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </method>
+      <method name="get_query_types_default"
+              c:identifier="gst_pad_get_query_types_default"
+              doc="Invoke the default dispatcher for the query types on
+the pad.
+internally-linked pads has a query types function.">
+        <return-value transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </return-value>
+      </method>
+      <method name="query"
+              c:identifier="gst_pad_query"
+              doc="Dispatches a query to a pad. The query should have been allocated by the
+caller via one of the type-specific allocation functions in gstquery.h. The
+element is responsible for filling the query with an appropriate response,
+which should then be parsed with a type-specific query parsing function.
+Again, the caller is responsible for both the allocation and deallocation of
+the query structure.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peer_query"
+              c:identifier="gst_pad_peer_query"
+              doc="Performs gst_pad_query() on the peer of @pad.
+The caller is responsible for both the allocation and deallocation of
+the query structure.
+if @pad has no peer."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_query_function"
+              c:identifier="gst_pad_set_query_function"
+              doc="Set the given query function for the pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none" scope="call">
+            <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_default"
+              c:identifier="gst_pad_query_default"
+              doc="Invokes the default query handler for the given pad.
+The query is sent to all pads internally linked to @pad. Note that
+if there are many possible sink pads that are internally linked to
+Multi-sinkpad elements should implement custom query handlers.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="query" transfer-ownership="none">
+            <type name="Query" c:type="GstQuery*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="dispatcher"
+              c:identifier="gst_pad_dispatcher"
+              doc="Invokes the given dispatcher function on each respective peer of
+all pads that are internally linked to the given pad.
+The GstPadDispatcherFunction should return TRUE when no further pads
+need to be processed.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dispatch"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="PadDispatcherFunction"
+                  c:type="GstPadDispatcherFunction"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="use_fixed_caps"
+              c:identifier="gst_pad_use_fixed_caps"
+              doc="A helper function you can use that sets the
+pad. This way the function will always return the negotiated caps
+or in case the pad is not negotiated, the padtemplate caps.
+Use this function on a pad that, once gst_pad_set_caps() has been called
+on it, cannot be renegotiated to something else.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_fixed_caps_func"
+              c:identifier="gst_pad_get_fixed_caps_func"
+              doc="A helper function you can use as a GetCaps function that
+will return the currently negotiated caps or the padtemplate
+when NULL.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="proxy_getcaps"
+              c:identifier="gst_pad_proxy_getcaps"
+              doc="Calls gst_pad_get_allowed_caps() for every other pad belonging to the
+same element as @pad, and returns the intersection of the results.
+This function is useful as a default getcaps function for an element
+that can handle any stream format, but requires all its pads to have
+the same caps.  Two such elements are tee and adder.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="proxy_setcaps" c:identifier="gst_pad_proxy_setcaps">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent_element"
+              c:identifier="gst_pad_get_parent_element"
+              doc="Gets the parent of @pad, cast to a #GstElement. If a @pad has no parent or
+its parent is not an element, return NULL.
+unref when you&apos;re finished with it.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+      </method>
+      <method name="query_position"
+              c:identifier="gst_pad_query_position"
+              doc="On return contains the #GstFormat used.
+Queries a pad for the stream position.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format"
+                     direction="inout"
+                     transfer-ownership="full"
+                     doc="a pointer to the #GstFormat asked for.">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="A location in which to store the current position, or NULL.">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_duration"
+              c:identifier="gst_pad_query_duration"
+              doc="On return contains the #GstFormat used.
+Queries a pad for the total stream duration.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_convert"
+              c:identifier="gst_pad_query_convert"
+              doc="Queries a pad to convert @src_val in @src_format to @dest_format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_peer_position"
+              c:identifier="gst_pad_query_peer_position"
+              doc="Must be a sink pad.
+On return contains the #GstFormat used.
+Queries the peer of a given sink pad for the stream position.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_peer_duration"
+              c:identifier="gst_pad_query_peer_duration"
+              doc="Must be a sink pad.
+On return contains the #GstFormat used.
+Queries the peer pad of a given sink pad for the total stream duration.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_peer_convert"
+              c:identifier="gst_pad_query_peer_convert"
+              doc="Must be a sink pad.
+Queries the peer pad of a given sink pad to convert @src_val in @src_format
+to @dest_format.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_val" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_val" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_data_probe"
+              c:identifier="gst_pad_add_data_probe"
+              doc="Adds a &quot;data probe&quot; to a pad. This function will be called whenever data
+passes through a pad. In this case data means both events and buffers. The
+probe will be called with the data as an argument, meaning @handler should
+have the same callback signature as the #GstPad::have-data signal.
+Note that the data will have a reference count greater than 1, so it will
+be immutable -- you must not change it.
+For source pads, the probe will be called after the blocking function, if any
+(see gst_pad_set_blocked_async()), but before looking up the peer to chain
+to. For sink pads, the probe function will be called before configuring the
+sink with new caps, if any, and before calling the pad&apos;s chain function.
+Your data probe should return TRUE to let the data continue to flow, or FALSE
+to drop it. Dropping data is rarely useful, but occasionally comes in handy
+with events.
+Although probes are implemented internally by connecting @handler to the
+have-data signal on the pad, if you want to remove a probe it is insufficient
+to only call g_signal_handler_disconnect on the returned handler id. To
+remove a probe, use the appropriate function, such as
+gst_pad_remove_data_probe().">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_data_probe_full"
+              c:identifier="gst_pad_add_data_probe_full"
+              doc="Adds a &quot;data probe&quot; to a pad. This function will be called whenever data
+passes through a pad. In this case data means both events and buffers. The
+probe will be called with the data as an argument, meaning @handler should
+have the same callback signature as the #GstPad::have-data signal.
+Note that the data will have a reference count greater than 1, so it will
+be immutable -- you must not change it.
+For source pads, the probe will be called after the blocking function, if any
+(see gst_pad_set_blocked_async()), but before looking up the peer to chain
+to. For sink pads, the probe function will be called before configuring the
+sink with new caps, if any, and before calling the pad&apos;s chain function.
+Your data probe should return TRUE to let the data continue to flow, or FALSE
+to drop it. Dropping data is rarely useful, but occasionally comes in handy
+with events.
+Although probes are implemented internally by connecting @handler to the
+have-data signal on the pad, if you want to remove a probe it is insufficient
+to only call g_signal_handler_disconnect on the returned handler id. To
+remove a probe, use the appropriate function, such as
+gst_pad_remove_data_probe().
+The @notify function is called when the probe is disconnected and usually
+used to free @data."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_data_probe"
+              c:identifier="gst_pad_remove_data_probe"
+              doc="Removes a data probe from @pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_event_probe"
+              c:identifier="gst_pad_add_event_probe"
+              doc="Adds a probe that will be called for all events passing through a pad. See
+gst_pad_add_data_probe() for more information.">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_event_probe_full"
+              c:identifier="gst_pad_add_event_probe_full"
+              doc="Adds a probe that will be called for all events passing through a pad. See
+gst_pad_add_data_probe() for more information.
+The @notify function is called when the probe is disconnected and usually
+used to free @data."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_event_probe"
+              c:identifier="gst_pad_remove_event_probe"
+              doc="Removes an event probe from @pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_buffer_probe"
+              c:identifier="gst_pad_add_buffer_probe"
+              doc="Adds a probe that will be called for all buffers passing through a pad. See
+gst_pad_add_data_probe() for more information.">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_buffer_probe_full"
+              c:identifier="gst_pad_add_buffer_probe_full"
+              doc="Adds a probe that will be called for all buffers passing through a pad. See
+gst_pad_add_data_probe() for more information.
+The @notify function is called when the probe is disconnected and usually
+used to free @data."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_buffer_probe"
+              c:identifier="gst_pad_remove_buffer_probe"
+              doc="Removes a buffer probe from @pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="caps">
+        <type name="Caps" c:type="GstCaps"/>
+      </property>
+      <property name="direction" writable="1" construct-only="1">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </property>
+      <property name="template" writable="1">
+        <type name="PadTemplate" c:type="GstPadTemplate"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="element_private">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="padtemplate">
+        <type name="PadTemplate" c:type="GstPadTemplate*"/>
+      </field>
+      <field name="direction">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </field>
+      <field name="stream_rec_lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="task">
+        <type name="Task" c:type="GstTask*"/>
+      </field>
+      <field name="preroll_lock">
+        <type name="GLib.Mutex" c:type="GMutex*"/>
+      </field>
+      <field name="preroll_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="block_cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="block_callback">
+        <type name="PadBlockCallback" c:type="GstPadBlockCallback"/>
+      </field>
+      <field name="block_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="caps">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="getcapsfunc">
+        <type name="PadGetCapsFunction" c:type="GstPadGetCapsFunction"/>
+      </field>
+      <field name="setcapsfunc">
+        <type name="PadSetCapsFunction" c:type="GstPadSetCapsFunction"/>
+      </field>
+      <field name="acceptcapsfunc">
+        <type name="PadAcceptCapsFunction" c:type="GstPadAcceptCapsFunction"/>
+      </field>
+      <field name="fixatecapsfunc">
+        <type name="PadFixateCapsFunction" c:type="GstPadFixateCapsFunction"/>
+      </field>
+      <field name="activatefunc">
+        <type name="PadActivateFunction" c:type="GstPadActivateFunction"/>
+      </field>
+      <field name="activatepushfunc">
+        <type name="PadActivateModeFunction"
+              c:type="GstPadActivateModeFunction"/>
+      </field>
+      <field name="activatepullfunc">
+        <type name="PadActivateModeFunction"
+              c:type="GstPadActivateModeFunction"/>
+      </field>
+      <field name="linkfunc">
+        <type name="PadLinkFunction" c:type="GstPadLinkFunction"/>
+      </field>
+      <field name="unlinkfunc">
+        <type name="PadUnlinkFunction" c:type="GstPadUnlinkFunction"/>
+      </field>
+      <field name="peer">
+        <type name="Pad" c:type="GstPad*"/>
+      </field>
+      <field name="sched_private">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="chainfunc">
+        <type name="PadChainFunction" c:type="GstPadChainFunction"/>
+      </field>
+      <field name="checkgetrangefunc">
+        <type name="PadCheckGetRangeFunction"
+              c:type="GstPadCheckGetRangeFunction"/>
+      </field>
+      <field name="getrangefunc">
+        <type name="PadGetRangeFunction" c:type="GstPadGetRangeFunction"/>
+      </field>
+      <field name="eventfunc">
+        <type name="PadEventFunction" c:type="GstPadEventFunction"/>
+      </field>
+      <field name="mode">
+        <type name="ActivateMode" c:type="GstActivateMode"/>
+      </field>
+      <field name="querytypefunc">
+        <type name="PadQueryTypeFunction" c:type="GstPadQueryTypeFunction"/>
+      </field>
+      <field name="queryfunc">
+        <type name="PadQueryFunction" c:type="GstPadQueryFunction"/>
+      </field>
+      <field name="intlinkfunc">
+        <type name="PadIntLinkFunction" c:type="GstPadIntLinkFunction"/>
+      </field>
+      <field name="bufferallocfunc">
+        <type name="PadBufferAllocFunction"
+              c:type="GstPadBufferAllocFunction"/>
+      </field>
+      <field name="do_buffer_signals">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="do_event_signals">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="iterintlinkfunc">
+        <type name="PadIterIntLinkFunction"
+              c:type="GstPadIterIntLinkFunction"/>
+      </field>
+      <field name="block_destroy_data">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="block_callback_called" writable="1">
+            <type name="boolean" c:type="gboolean"/>
+          </field>
+          <field name="priv" writable="1">
+            <type name="PadPrivate" c:type="GstPadPrivate*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <glib:signal name="have-data"
+                   doc="Signals that new data is available on the pad. This signal is used
+internally for implementing pad probes.
+See gst_pad_add_*_probe functions.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mini_obj" transfer-ownership="none">
+            <type name="MiniObject" c:type="GstMiniObject"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="linked"
+                   doc="Signals that a pad has been linked to the peer pad.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="peer" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="request-link"
+                   doc="Signals that a pad connection has been requested.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unlinked"
+                   doc="Signals that a pad has been unlinked from the peer pad.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="peer" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <callback name="PadAcceptCapsFunction"
+              c:type="GstPadAcceptCapsFunction"
+              doc="Check if @pad can accept @caps. By default this function will see if @caps
+intersect with the result from gst_pad_get_caps() by can be overridden to
+perform extra checks.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadActivateFunction"
+              c:type="GstPadActivateFunction"
+              doc="This function is called when the pad is activated during the element
+READY to PAUSED state change. By default this function will call the
+activate function that puts the pad in push mode but elements can
+override this function to activate the pad in pull mode if they wish.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadActivateModeFunction"
+              c:type="GstPadActivateModeFunction"
+              doc="The prototype of the push and pull activate functions.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="active" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadBlockCallback"
+              c:type="GstPadBlockCallback"
+              doc="Callback used by gst_pad_set_blocked_async(). Gets called when the blocking
+operation succeeds.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="blocked" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadBufferAllocFunction"
+              c:type="GstPadBufferAllocFunction"
+              doc="Ask the sinkpad @pad to allocate a buffer with @offset, @size and @caps.
+The result will be stored in @buf.
+The purpose of this function is to allocate a buffer that is optimal to
+be processed by @pad. The function is mostly overridden by elements that can
+provide a hardware buffer in order to avoid additional memcpy operations.
+The function can return a buffer that has caps different from the requested
+new caps.
+If a format change was requested, the returned buffer will be one to hold
+the data of said new caps, so its size might be different from the requested
+When this function returns anything else than #GST_FLOW_OK, the buffer allocation
+failed and @buf does not contain valid data. If the function returns #GST_FLOW_OK and
+the @buf is NULL, a #GstBuffer will be created with @caps, @offset and @size.
+By default this function returns a new buffer of @size and with @caps containing
+purely malloced data. The buffer should be freed with gst_buffer_unref()
+after usage.
+value means @buf does not hold a valid buffer.">
+      <return-value transfer-ownership="full">
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadChainFunction"
+              c:type="GstPadChainFunction"
+              doc="A function that will be called on sinkpads when chaining buffers.
+The function typically processes the data contained in the buffer and
+either consumes the data or passes it on to the internally linked pad(s).
+The implementer of this function receives a refcount to @buffer and should
+gst_buffer_unref() when the buffer is no longer needed.
+When a chain function detects an error in the data stream, it must post an
+error on the bus and return an appropriate #GstFlowReturn value.">
+      <return-value transfer-ownership="full">
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadChainListFunction"
+              c:type="GstPadChainListFunction"
+              doc="A function that will be called on sinkpads when chaining buffer lists.
+The function typically processes the data contained in the buffer list and
+either consumes the data or passes it on to the internally linked pad(s).
+The implementer of this function receives a refcount to @list and
+should gst_buffer_list_unref() when the list is no longer needed.
+When a chainlist function detects an error in the data stream, it must
+post an error on the bus and return an appropriate #GstFlowReturn value.">
+      <return-value transfer-ownership="full">
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <type name="BufferList" c:type="GstBufferList*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadCheckGetRangeFunction"
+              c:type="GstPadCheckGetRangeFunction"
+              doc="Check if @pad can be activated in pull mode.
+This function will be deprecated after 0.10; use the seeking query to check
+if a pad can support random access.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PadClass"
+            c:type="GstPadClass"
+            glib:is-gtype-struct-for="Pad">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="linked">
+        <callback name="linked" c:type="linked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="peer" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unlinked">
+        <callback name="unlinked" c:type="unlinked">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="peer" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="request_link">
+        <callback name="request_link" c:type="request_link">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="have_data">
+        <callback name="have_data" c:type="have_data">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="MiniObject" c:type="GstMiniObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="PadDirection"
+                 doc="The direction of a pad."
+                 c:type="GstPadDirection">
+      <member name="unknown" value="0" c:identifier="GST_PAD_UNKNOWN"/>
+      <member name="src" value="1" c:identifier="GST_PAD_SRC"/>
+      <member name="sink" value="2" c:identifier="GST_PAD_SINK"/>
+    </enumeration>
+    <callback name="PadDispatcherFunction"
+              c:type="GstPadDispatcherFunction"
+              doc="A dispatcher function is called for all internally linked pads, see
+gst_pad_dispatcher().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadEventFunction"
+              c:type="GstPadEventFunction"
+              doc="Function signature to handle an event for the pad.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Event" c:type="GstEvent*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadFixateCapsFunction"
+              c:type="GstPadFixateCapsFunction"
+              doc="Given possibly unfixed caps @caps, let @pad use its default prefered
+format to make a fixed caps. @caps should be writable. By default this
+function will pick the first value of any ranges or lists in the caps but
+elements can override this function to perform other behaviour.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="PadFlags" doc="Pad state flags" c:type="GstPadFlags">
+      <member name="blocked" value="16" c:identifier="GST_PAD_BLOCKED"/>
+      <member name="flushing" value="32" c:identifier="GST_PAD_FLUSHING"/>
+      <member name="in_getcaps" value="64" c:identifier="GST_PAD_IN_GETCAPS"/>
+      <member name="in_setcaps" value="128" c:identifier="GST_PAD_IN_SETCAPS"/>
+      <member name="blocking" value="256" c:identifier="GST_PAD_BLOCKING"/>
+      <member name="flag_last" value="4096" c:identifier="GST_PAD_FLAG_LAST"/>
+    </bitfield>
+    <callback name="PadGetCapsFunction"
+              c:type="GstPadGetCapsFunction"
+              doc="Returns a copy of the capabilities of the specified pad. By default this
+function will return the pad template capabilities, but can optionally
+be overridden by elements.">
+      <return-value transfer-ownership="full">
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadGetRangeFunction"
+              c:type="GstPadGetRangeFunction"
+              doc="This function will be called on source pads when a peer element
+request a buffer at the specified @offset and @length. If this function
+returns #GST_FLOW_OK, the result buffer will be stored in @buffer. The
+contents of @buffer is invalid for any other return value.
+This function is installed on a source pad with
+gst_pad_set_getrange_function() and can only be called on source pads after
+they are successfully activated with gst_pad_activate_pull().
+between 0 and the length in bytes of the data available on @pad. The
+length (duration in bytes) can be retrieved with a #GST_QUERY_DURATION or with a
+#GST_QUERY_SEEKING.
+Any @offset larger or equal than the length will make the function return
+#GST_FLOW_UNEXPECTED, which corresponds to EOS. In this case @buffer does not
+contain a valid buffer.
+The buffer size of @buffer might be smaller than @length when @offset is near
+the end of the stream.
+It is allowed to call this function with a 0 @length and valid @offset, in
+which case @buffer will contain a 0-sized buffer and the function returns
+#GST_FLOW_OK.
+When this function is called with a -1 @offset, the sequentially next buffer
+of length @length in the stream is returned.
+When this function is called with a -1 @length, a buffer with a default
+optimal length is returned in @buffer. The length might depend on the value
+of @offset.">
+      <return-value transfer-ownership="full">
+        <type name="FlowReturn" c:type="GstFlowReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="Buffer" c:type="GstBuffer**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadIntLinkFunction"
+              c:type="GstPadIntLinkFunction"
+              doc="The signature of the internal pad link function.
+the inside of the parent element.
+The caller must call g_list_free() on it after use."
+              deprecated="use the threadsafe #GstPadIterIntLinkFunction instead.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadIterIntLinkFunction"
+              c:type="GstPadIterIntLinkFunction"
+              doc="The signature of the internal pad link iterator function.
+linked to the given pad on the inside of the parent element.
+the caller must call gst_iterator_free() after usage.
+Since 0.10.21">
+      <return-value transfer-ownership="full">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadLinkFunction" c:type="GstPadLinkFunction">
+      <return-value transfer-ownership="full">
+        <type name="PadLinkReturn" c:type="GstPadLinkReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="peer" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="PadLinkReturn"
+                 doc="Result values from gst_pad_link and friends."
+                 c:type="GstPadLinkReturn">
+      <member name="ok" value="0" c:identifier="GST_PAD_LINK_OK"/>
+      <member name="wrong_hierarchy"
+              value="-1"
+              c:identifier="GST_PAD_LINK_WRONG_HIERARCHY"/>
+      <member name="was_linked"
+              value="-2"
+              c:identifier="GST_PAD_LINK_WAS_LINKED"/>
+      <member name="wrong_direction"
+              value="-3"
+              c:identifier="GST_PAD_LINK_WRONG_DIRECTION"/>
+      <member name="noformat" value="-4" c:identifier="GST_PAD_LINK_NOFORMAT"/>
+      <member name="nosched" value="-5" c:identifier="GST_PAD_LINK_NOSCHED"/>
+      <member name="refused" value="-6" c:identifier="GST_PAD_LINK_REFUSED"/>
+    </enumeration>
+    <enumeration name="PadPresence"
+                 doc="gst_element_get_request_pad().
+Indicates when this pad will become available."
+                 c:type="GstPadPresence">
+      <member name="always" value="0" c:identifier="GST_PAD_ALWAYS"/>
+      <member name="sometimes" value="1" c:identifier="GST_PAD_SOMETIMES"/>
+      <member name="request" value="2" c:identifier="GST_PAD_REQUEST"/>
+    </enumeration>
+    <record name="PadPrivate" c:type="GstPadPrivate">
+    </record>
+    <callback name="PadQueryFunction"
+              c:type="GstPadQueryFunction"
+              doc="The signature of the query function.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="query" transfer-ownership="none">
+          <type name="Query" c:type="GstQuery*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadQueryTypeFunction"
+              c:type="GstPadQueryTypeFunction"
+              doc="The signature of the query types function.">
+      <return-value transfer-ownership="none">
+        <type name="QueryType" c:type="GstQueryType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PadSetCapsFunction"
+              c:type="GstPadSetCapsFunction"
+              doc="Set @caps on @pad. By default this function updates the caps of the
+pad but the function can be overriden by elements to perform extra
+actions or verifications.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="PadTemplate"
+           c:type="GstPadTemplate"
+           doc="The padtemplate object."
+           parent="Object"
+           glib:type-name="GstPadTemplate"
+           glib:get-type="gst_pad_template_get_type"
+           glib:type-struct="PadTemplateClass">
+      <constructor name="new"
+                   c:identifier="gst_pad_template_new"
+                   doc="Creates a new pad template with a name according to the given template
+and with the given arguments. This functions takes ownership of the provided
+caps, so be sure to not use them afterwards.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name_template" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="PadDirection" c:type="GstPadDirection"/>
+          </parameter>
+          <parameter name="presence" transfer-ownership="none">
+            <type name="PadPresence" c:type="GstPadPresence"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_caps"
+              c:identifier="gst_pad_template_get_caps"
+              doc="Gets the capabilities of the pad template.
+the caps, take a ref (see gst_caps_ref ()).">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="pad_created"
+              c:identifier="gst_pad_template_pad_created"
+              doc="Emit the pad-created signal for this template when created by this pad.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="caps" writable="1" construct-only="1">
+        <type name="Caps" c:type="GstCaps"/>
+      </property>
+      <property name="direction" writable="1" construct-only="1">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </property>
+      <property name="name-template" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="presence" writable="1" construct-only="1">
+        <type name="PadPresence" c:type="GstPadPresence"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="name_template">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="direction">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </field>
+      <field name="presence">
+        <type name="PadPresence" c:type="GstPadPresence"/>
+      </field>
+      <field name="caps">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="pad-created"
+                   doc="This signal is fired when an element creates a pad from this template.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pad" transfer-ownership="none">
+            <type name="Pad" c:type="GstPad"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="PadTemplateClass"
+            c:type="GstPadTemplateClass"
+            glib:is-gtype-struct-for="PadTemplate">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="pad_created">
+        <callback name="pad_created" c:type="pad_created">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="templ" transfer-ownership="none">
+              <type name="PadTemplate" c:type="GstPadTemplate*"/>
+            </parameter>
+            <parameter name="pad" transfer-ownership="none">
+              <type name="Pad" c:type="GstPad*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="PadTemplateFlags"
+              doc="Flags for the padtemplate"
+              c:type="GstPadTemplateFlags">
+      <member name="fixed" value="16" c:identifier="GST_PAD_TEMPLATE_FIXED"/>
+      <member name="flag_last"
+              value="256"
+              c:identifier="GST_PAD_TEMPLATE_FLAG_LAST"/>
+    </bitfield>
+    <callback name="PadUnlinkFunction" c:type="GstPadUnlinkFunction">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ParamSpecFraction"
+            c:type="GstParamSpecFraction"
+            doc="A GParamSpec derived structure that contains the meta data for fractional
+properties.">
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="min_num" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="min_den" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_num" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_den" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="def_num" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="def_den" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <record name="ParamSpecMiniObject"
+            c:type="GstParamSpecMiniObject"
+            doc="A %GParamSpec derived structure that contains the meta data
+for %GstMiniObject properties.">
+      <field name="parent_instance" writable="1">
+        <type name="GObject.ParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="ParseContext"
+            c:type="GstParseContext"
+            doc="Opaque structure."
+            version="0.10.20">
+      <constructor name="new"
+                   c:identifier="gst_parse_context_new"
+                   doc="Allocates a parse context for use with gst_parse_launch_full() or
+gst_parse_launchv_full().
+when no longer needed."
+                   version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </return-value>
+      </constructor>
+      <method name="get_missing_elements"
+              c:identifier="gst_parse_context_get_missing_elements"
+              doc="Retrieve missing elements from a previous run of gst_parse_launch_full()
+or gst_parse_launchv_full(). Will only return results if an error code
+of %GST_PARSE_ERROR_NO_SUCH_ELEMENT was returned.
+missing elements. Free with g_strfreev() when no longer needed."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_parse_context_free"
+              doc="Frees a parse context previously allocated with gst_parse_context_new()."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="ParseError"
+                 doc="The different parsing errors that can occur."
+                 c:type="GstParseError"
+                 glib:error-quark="gst_parse_error_quark">
+      <member name="syntax" value="0" c:identifier="GST_PARSE_ERROR_SYNTAX"/>
+      <member name="no_such_element"
+              value="1"
+              c:identifier="GST_PARSE_ERROR_NO_SUCH_ELEMENT"/>
+      <member name="no_such_property"
+              value="2"
+              c:identifier="GST_PARSE_ERROR_NO_SUCH_PROPERTY"/>
+      <member name="link" value="3" c:identifier="GST_PARSE_ERROR_LINK"/>
+      <member name="could_not_set_property"
+              value="4"
+              c:identifier="GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY"/>
+      <member name="empty_bin"
+              value="5"
+              c:identifier="GST_PARSE_ERROR_EMPTY_BIN"/>
+      <member name="empty" value="6" c:identifier="GST_PARSE_ERROR_EMPTY"/>
+    </enumeration>
+    <bitfield name="ParseFlags"
+              doc="(default behaviour is to return partially constructed bins or elements
+in some cases)
+Parsing options."
+              version="0.10.20"
+              c:type="GstParseFlags">
+      <member name="none" value="0" c:identifier="GST_PARSE_FLAG_NONE"/>
+      <member name="fatal_errors"
+              value="1"
+              c:identifier="GST_PARSE_FLAG_FATAL_ERRORS"/>
+    </bitfield>
+    <class name="Pipeline"
+           c:type="GstPipeline"
+           doc="GST_PIPELINE_FLAG_FIXED_CLOCK is set.
+property would be the running_time, the total time spent in the
+PLAYING state without being flushed. (deprecated, use the start_time
+on GstElement).
+when setting elements to PLAYING.
+The #GstPipeline structure."
+           parent="Bin"
+           glib:type-name="GstPipeline"
+           glib:get-type="gst_pipeline_get_type"
+           glib:type-struct="PipelineClass">
+      <implements name="ChildProxy"/>
+      <constructor name="new"
+                   c:identifier="gst_pipeline_new"
+                   doc="Create a new pipeline with the given name.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Pipeline" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_bus"
+              c:identifier="gst_pipeline_get_bus"
+              doc="Gets the #GstBus of @pipeline. The bus allows applications to receive
+#GstMessage packets.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Bus" c:type="GstBus*"/>
+        </return-value>
+      </method>
+      <method name="set_new_stream_time"
+              c:identifier="gst_pipeline_set_new_stream_time"
+              doc="Set the new start time of @pipeline to @time. The start time is used to
+set the base time on the elements (see gst_element_set_base_time())
+in the PAUSED-&gt;PLAYING state transition.
+Setting @time to #GST_CLOCK_TIME_NONE will disable the pipeline&apos;s management
+of element base time. The application will then be responsible for
+performing base time distribution. This is sometimes useful if you want to
+synchronize capture from multiple pipelines, and you can also ensure that the
+pipelines have the same clock.
+MT safe.
+gst_element_set_start_time()."
+              deprecated="This function has the wrong name and is equivalent to">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_last_stream_time"
+              c:identifier="gst_pipeline_get_last_stream_time"
+              doc="Gets the last running time of @pipeline. If the pipeline is PLAYING,
+the returned time is the running time used to configure the element&apos;s
+base time in the PAUSED-&gt;PLAYING state. If the pipeline is PAUSED, the
+returned time is the running time when the pipeline was paused.
+This function returns #GST_CLOCK_TIME_NONE if the pipeline was
+configured to not handle the management of the element&apos;s base time
+(see gst_pipeline_set_new_stream_time()).
+MT safe.
+gst_element_get_start_time()."
+              deprecated="This function has the wrong name and is equivalent to">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="use_clock"
+              c:identifier="gst_pipeline_use_clock"
+              doc="Force @pipeline to use the given @clock. The pipeline will
+always use the given clock even if new clock providers are added
+to this pipeline.
+If @clock is NULL all clocking will be disabled which will make
+the pipeline run as fast as possible.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clock"
+              c:identifier="gst_pipeline_set_clock"
+              doc="Set the clock for @pipeline. The clock will be distributed
+to all the elements managed by the pipeline.
+some element did not accept the clock.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="clock" transfer-ownership="none">
+            <type name="Clock" c:type="GstClock*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_clock"
+              c:identifier="gst_pipeline_get_clock"
+              doc="Gets the current clock used by @pipeline.">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </method>
+      <method name="auto_clock"
+              c:identifier="gst_pipeline_auto_clock"
+              doc="Let @pipeline select a clock automatically. This is the default
+behaviour.
+Use this function if you previous forced a fixed clock with
+gst_pipeline_use_clock() and want to restore the default
+pipeline clock selection algorithm.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_delay"
+              c:identifier="gst_pipeline_set_delay"
+              doc="Set the expected delay needed for all elements to perform the
+PAUSED to PLAYING state change. @delay will be added to the
+base time of the elements so that they wait an additional @delay
+amount of time before starting to process buffers and cannot be
+#GST_CLOCK_TIME_NONE.
+This option is used for tuning purposes and should normally not be
+used.
+MT safe."
+              version="0.10.5">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="delay" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_delay"
+              c:identifier="gst_pipeline_get_delay"
+              doc="Get the configured delay (see gst_pipeline_set_delay()).
+MT safe."
+              version="0.10.5">
+        <return-value transfer-ownership="full">
+          <type name="ClockTime" c:type="GstClockTime"/>
+        </return-value>
+      </method>
+      <method name="set_auto_flush_bus"
+              c:identifier="gst_pipeline_set_auto_flush_bus"
+              doc="the pipeline goes from READY to NULL state
+Usually, when a pipeline goes from READY to NULL state, it automatically
+flushes all pending messages on the bus, which is done for refcounting
+purposes, to break circular references.
+This means that applications that update state using (async) bus messages
+(e.g. do certain things when a pipeline goes from PAUSED to READY) might
+not get to see messages when the pipeline is shut down, because they might
+be flushed before they can be dispatched in the main thread. This behaviour
+can be disabled using this function.
+It is important that all messages on the bus are handled when the
+automatic flushing is disabled else memory leaks will be introduced.
+MT safe."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="auto_flush" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_auto_flush_bus"
+              c:identifier="gst_pipeline_get_auto_flush_bus"
+              doc="Check if @pipeline will automatically flush messages when going to
+the NULL state.
+going from READY to NULL state or not.
+MT safe."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="auto-flush-bus"
+                version="0.10.4"
+                writable="1"
+                doc="Whether or not to automatically flush all messages on the
+pipeline&apos;s bus when going from READY to NULL state. Please see
+gst_pipeline_set_auto_flush_bus() for more information on this option.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="delay" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GstBin"/>
+      </field>
+      <field name="fixed_clock">
+        <type name="Clock" c:type="GstClock*"/>
+      </field>
+      <field name="stream_time">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="delay">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </field>
+      <field name="priv">
+        <type name="PipelinePrivate" c:type="GstPipelinePrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="PipelineClass"
+            c:type="GstPipelineClass"
+            glib:is-gtype-struct-for="Pipeline">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GstBinClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="PipelineFlags"
+              doc="Pipeline flags"
+              c:type="GstPipelineFlags">
+      <member name="fixed_clock"
+              value="33554432"
+              c:identifier="GST_PIPELINE_FLAG_FIXED_CLOCK"/>
+      <member name="last"
+              value="536870912"
+              c:identifier="GST_PIPELINE_FLAG_LAST"/>
+    </bitfield>
+    <record name="PipelinePrivate" c:type="GstPipelinePrivate">
+    </record>
+    <class name="Plugin"
+           c:type="GstPlugin"
+           doc="The plugin object"
+           parent="Object"
+           glib:type-name="GstPlugin"
+           glib:get-type="gst_plugin_get_type"
+           glib:type-struct="PluginClass">
+      <function name="register_static"
+                c:identifier="gst_plugin_register_static"
+                doc="plugin was compiled for, you can just use GST_VERSION_MAJOR here
+plugin was compiled for, you can just use GST_VERSION_MINOR here
+library-specific namespace prefix in order to avoid name conflicts in
+case a similar plugin with the same name ever gets added to GStreamer)
+(see #GstPluginDesc above) or the plugin will not be registered.
+Registers a static plugin, ie. a plugin which is private to an application
+or library and contained within the application or library (as opposed to
+being shipped as a separate module file).
+You must make sure that GStreamer has been initialised (with gst_init() or
+via gst_init_get_option_group()) before calling this function."
+                version="0.10.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="major_version" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="minor_version" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="init_func" transfer-ownership="none" scope="call">
+            <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
+          </parameter>
+          <parameter name="version" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="license" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="source" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="package" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="register_static_full"
+                c:identifier="gst_plugin_register_static_full"
+                doc="plugin was compiled for, you can just use GST_VERSION_MAJOR here
+plugin was compiled for, you can just use GST_VERSION_MINOR here
+library-specific namespace prefix in order to avoid name conflicts in
+case a similar plugin with the same name ever gets added to GStreamer)
+(see #GstPluginDesc above) or the plugin will not be registered.
+Registers a static plugin, ie. a plugin which is private to an application
+or library and contained within the application or library (as opposed to
+being shipped as a separate module file) with a #GstPluginInitFullFunc
+which allows user data to be passed to the callback function (useful
+for bindings).
+You must make sure that GStreamer has been initialised (with gst_init() or
+via gst_init_get_option_group()) before calling this function."
+                version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="major_version" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="minor_version" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="init_full_func"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="PluginInitFullFunc" c:type="GstPluginInitFullFunc"/>
+          </parameter>
+          <parameter name="version" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="license" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="source" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="package" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load_file"
+                c:identifier="gst_plugin_load_file"
+                doc="Loads the given plugin and refs it.  Caller needs to unref after use.
+newly-loaded GstPlugin, or NULL if an error occurred."
+                throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load_by_name"
+                c:identifier="gst_plugin_load_by_name"
+                doc="Load the named plugin. Refs the plugin.">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="list_free"
+                c:identifier="gst_plugin_list_free"
+                doc="Unrefs each member of @list, then frees the list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_name"
+              c:identifier="gst_plugin_get_name"
+              doc="Get the short name of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gst_plugin_get_description"
+              doc="Get the long descriptive name of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_filename"
+              c:identifier="gst_plugin_get_filename"
+              doc="get the filename of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_version"
+              c:identifier="gst_plugin_get_version"
+              doc="get the version of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_license"
+              c:identifier="gst_plugin_get_license"
+              doc="get the license of the plugin">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_source"
+              c:identifier="gst_plugin_get_source"
+              doc="get the source module the plugin belongs to.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_package"
+              c:identifier="gst_plugin_get_package"
+              doc="get the package the plugin belongs to.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_origin"
+              c:identifier="gst_plugin_get_origin"
+              doc="get the URL where the plugin comes from">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_cache_data"
+              c:identifier="gst_plugin_get_cache_data"
+              doc="Gets the plugin specific data cache. If it is %NULL there is no cached data
+stored. This is the case when the registry is getting rebuilt."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="set_cache_data"
+              c:identifier="gst_plugin_set_cache_data"
+              doc="Adds plugin specific data to cache. Passes the ownership of the structure to
+the @plugin.
+The cache is flushed every time the registry is rebuilt."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cache_data" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_module"
+              c:identifier="gst_plugin_get_module"
+              doc="Gets the #GModule of the plugin. If the plugin isn&apos;t loaded yet, NULL is
+returned.
+loaded yet.">
+        <return-value transfer-ownership="full">
+          <type name="GModule.Module" c:type="GModule*"/>
+        </return-value>
+      </method>
+      <method name="is_loaded"
+              c:identifier="gst_plugin_is_loaded"
+              doc="queries if the plugin is loaded into memory">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="name_filter"
+              c:identifier="gst_plugin_name_filter"
+              doc="A standard filter that returns TRUE when the plugin is of the
+given name.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load"
+              c:identifier="gst_plugin_load"
+              doc="Loads @plugin. Note that the *return value* is the loaded plugin; @plugin is
+untouched. The normal use pattern of this function goes like this:
+&lt;programlisting&gt;
+GstPlugin *loaded_plugin;
+loaded_plugin = gst_plugin_load (plugin);
+// presumably, we&apos;re no longer interested in the potentially-unloaded plugin
+gst_object_unref (plugin);
+plugin = loaded_plugin;
+&lt;/programlisting&gt;">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+      </method>
+      <method name="add_dependency"
+              c:identifier="gst_plugin_add_dependency"
+              doc="feature set of the plugin (e.g. an environment variable containing
+paths where to look for additional modules/plugins of a library),
+or NULL. Environment variable names may be followed by a path component
+which will be added to the content of the environment variable, e.g.
+&quot;HOME/.mystuff/plugins&quot;.
+may be.
+depending on @flags) to be used in combination with the paths from
+Make GStreamer aware of external dependencies which affect the feature
+set of this plugin (ie. the elements or typefinders associated with it).
+GStreamer will re-inspect plugins with external dependencies whenever any
+of the external dependencies change. This is useful for plugins which wrap
+other plugin systems, e.g. a plugin which wraps a plugin-based visualisation
+library and makes visualisations available as GStreamer elements, or a
+codec loader which exposes elements and/or caps dependent on what external
+codec libraries are currently installed."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="env_vars" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="paths" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="PluginDependencyFlags"
+                  c:type="GstPluginDependencyFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_dependency_simple"
+              c:identifier="gst_plugin_add_dependency_simple"
+              doc="or NULL. Environment variable names may be followed by a path component
+which will be added to the content of the environment variable, e.g.
+&quot;HOME/.mystuff/plugins:MYSTUFF_PLUGINS_PATH&quot;
+or NULL
+Make GStreamer aware of external dependencies which affect the feature
+set of this plugin (ie. the elements or typefinders associated with it).
+GStreamer will re-inspect plugins with external dependencies whenever any
+of the external dependencies change. This is useful for plugins which wrap
+other plugin systems, e.g. a plugin which wraps a plugin-based visualisation
+library and makes visualisations available as GStreamer elements, or a
+codec loader which exposes elements and/or caps dependent on what external
+codec libraries are currently installed.
+Convenience wrapper function for gst_plugin_add_dependency() which
+takes simple strings as arguments instead of string arrays, with multiple
+arguments separated by predefined delimiters (see above)."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="env_vars" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="paths" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="names" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="PluginDependencyFlags"
+                  c:type="GstPluginDependencyFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="desc">
+        <type name="PluginDesc" c:type="GstPluginDesc"/>
+      </field>
+      <field name="orig_desc">
+        <type name="PluginDesc" c:type="GstPluginDesc*"/>
+      </field>
+      <field name="flags">
+        <type name="uint" c:type="unsigned"/>
+      </field>
+      <field name="filename">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="basename">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="module">
+        <type name="GModule.Module" c:type="GModule*"/>
+      </field>
+      <field name="file_size">
+        <type name="size_t" c:type="off_t"/>
+      </field>
+      <field name="file_mtime">
+        <type name="time_t" c:type="time_t"/>
+      </field>
+      <field name="registered">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="priv">
+        <type name="PluginPrivate" c:type="GstPluginPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="PluginClass"
+            c:type="GstPluginClass"
+            glib:is-gtype-struct-for="Plugin">
+      <field name="object_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <bitfield name="PluginDependencyFlags"
+              doc="argument only if none of the environment variables is set
+filename argument as filter suffix and check all matching files in
+the directory
+Flags used in connection with gst_plugin_add_dependency()."
+              version="0.10.22"
+              c:type="GstPluginDependencyFlags">
+      <member name="none"
+              value="0"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_NONE"/>
+      <member name="recurse"
+              value="1"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_RECURSE"/>
+      <member name="paths_are_default_only"
+              value="2"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY"/>
+      <member name="file_name_is_suffix"
+              value="4"
+              c:identifier="GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX"/>
+    </bitfield>
+    <record name="PluginDesc"
+            c:type="GstPluginDesc"
+            doc="A plugin should export a variable of this type called plugin_desc. The plugin
+loader will use the data provided there to initialize the plugin.
+BSD, MIT/X11, Proprietary, unknown.">
+      <field name="major_version" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="minor_version" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="plugin_init" writable="1">
+        <type name="PluginInitFunc" c:type="GstPluginInitFunc"/>
+      </field>
+      <field name="version" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="license" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="source" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="package" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="origin" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="PluginError"
+                 doc="The plugin loading errors"
+                 c:type="GstPluginError"
+                 glib:error-quark="gst_plugin_error_quark">
+      <member name="module" value="0" c:identifier="GST_PLUGIN_ERROR_MODULE"/>
+      <member name="dependencies"
+              value="1"
+              c:identifier="GST_PLUGIN_ERROR_DEPENDENCIES"/>
+      <member name="name_mismatch"
+              value="2"
+              c:identifier="GST_PLUGIN_ERROR_NAME_MISMATCH"/>
+    </enumeration>
+    <class name="PluginFeature"
+           c:type="GstPluginFeature"
+           doc="Opaque #GstPluginFeature structure."
+           parent="Object"
+           abstract="1"
+           glib:type-name="GstPluginFeature"
+           glib:get-type="gst_plugin_feature_get_type"
+           glib:type-struct="PluginFeatureClass">
+      <function name="list_free"
+                c:identifier="gst_plugin_feature_list_free"
+                doc="Unrefs each member of @list, then frees the list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="list_copy"
+                c:identifier="gst_plugin_feature_list_copy"
+                doc="Copies the list of features. Caller should call @gst_plugin_feature_list_free
+when done with the list."
+                version="0.10.26">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="load"
+              c:identifier="gst_plugin_feature_load"
+              doc="Loads the plugin containing @feature if it&apos;s not already loaded. @feature is
+unaffected; use the return value instead.
+Normally this function is used like this:
+|[
+GstPluginFeature *loaded_feature;
+loaded_feature = gst_plugin_feature_load (feature);
+// presumably, we&apos;re no longer interested in the potentially-unloaded feature
+gst_object_unref (feature);
+feature = loaded_feature;
+]|">
+        <return-value transfer-ownership="full">
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </return-value>
+      </method>
+      <method name="type_name_filter"
+              c:identifier="gst_plugin_feature_type_name_filter"
+              doc="Compares type and name of plugin feature. Can be used with gst_filter_run().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="TypeNameData" c:type="GstTypeNameData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rank"
+              c:identifier="gst_plugin_feature_set_rank"
+              doc="Specifies a rank for a plugin feature, so that autoplugging uses
+the most appropriate feature.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rank" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name"
+              c:identifier="gst_plugin_feature_set_name"
+              doc="Sets the name of a plugin feature. The name uniquely identifies a feature
+within all features of the same type. Renaming a plugin feature is not
+allowed. A copy is made of the name so you should free the supplied @name
+after calling this function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_rank"
+              c:identifier="gst_plugin_feature_get_rank"
+              doc="Gets the rank of a plugin feature.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gst_plugin_feature_get_name"
+              doc="Gets the name of a plugin feature.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="check_version"
+              c:identifier="gst_plugin_feature_check_version"
+              doc="Checks whether the given plugin feature is at least
+the required version
+the required version, otherwise #FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_major" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="min_minor" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="min_micro" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="loaded">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="rank">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="plugin_name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="PluginFeatureClass"
+            c:type="GstPluginFeatureClass"
+            glib:is-gtype-struct-for="PluginFeature">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="PluginFeatureFilter"
+              c:type="GstPluginFeatureFilter"
+              doc="gst_registry_feature_filter()
+A function that can be used with e.g. gst_registry_feature_filter()
+to get a list of pluginfeature that match certain criteria.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature" transfer-ownership="none">
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PluginFilter"
+              c:type="GstPluginFilter"
+              doc="A function that can be used with e.g. gst_registry_plugin_filter()
+to get a list of plugins that match certain criteria.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="PluginFlags"
+              doc="The plugin loading state"
+              c:type="GstPluginFlags">
+      <member name="cached" value="1" c:identifier="GST_PLUGIN_FLAG_CACHED"/>
+      <member name="blacklisted"
+              value="2"
+              c:identifier="GST_PLUGIN_FLAG_BLACKLISTED"/>
+    </bitfield>
+    <callback name="PluginInitFullFunc"
+              c:type="GstPluginInitFullFunc"
+              doc="A plugin should provide a pointer to a function of either #GstPluginInitFunc
+or this type in the plugin_desc struct.
+The function will be called by the loader at startup. One would then
+register each #GstPluginFeature. This version allows
+user data to be passed to init function (useful for bindings)."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="PluginInitFunc"
+              c:type="GstPluginInitFunc"
+              doc="A plugin should provide a pointer to a function of this type in the
+plugin_desc struct.
+This function will be called by the loader at startup. One would then
+register each #GstPluginFeature.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PluginPrivate" c:type="GstPluginPrivate">
+    </record>
+    <record name="Poll"
+            c:type="GstPoll"
+            doc="A set of file/network descriptors.">
+      <constructor name="new"
+                   c:identifier="gst_poll_new"
+                   doc="Create a new file descriptor set. If @controllable, it
+is possible to restart or flush a call to gst_poll_wait() with
+gst_poll_restart() and gst_poll_set_flushing() respectively.
+gst_poll_free()."
+                   version="0.10.18">
+        <return-value transfer-ownership="full">
+          <type name="Poll" c:type="GstPoll*"/>
+        </return-value>
+        <parameters>
+          <parameter name="controllable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_timer"
+                   c:identifier="gst_poll_new_timer"
+                   doc="Create a new poll object that can be used for scheduling cancellable
+timeouts.
+A timeout is performed with gst_poll_wait(). Multiple timeouts can be
+performed from different threads.
+gst_poll_free()."
+                   version="0.10.23">
+        <return-value transfer-ownership="full">
+          <type name="Poll" c:type="GstPoll*"/>
+        </return-value>
+      </constructor>
+      <method name="free"
+              c:identifier="gst_poll_free"
+              doc="Free a file descriptor set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_fd"
+              c:identifier="gst_poll_add_fd"
+              doc="Add a file descriptor to the file descriptor set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_fd"
+              c:identifier="gst_poll_remove_fd"
+              doc="Remove a file descriptor from the file descriptor set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_ctl_write"
+              c:identifier="gst_poll_fd_ctl_write"
+              doc="Control whether the descriptor @fd in @set will be monitored for
+writability."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_ctl_read"
+              c:identifier="gst_poll_fd_ctl_read"
+              doc="Control whether the descriptor @fd in @set will be monitored for
+readability."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+          <parameter name="active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_ignored"
+              c:identifier="gst_poll_fd_ignored"
+              doc="Mark @fd as ignored so that the next call to gst_poll_wait() will yield
+the same result for @fd as last time. This function must be called if no
+operation (read/write/recv/send/etc.) will be performed on @fd before
+the next call to gst_poll_wait().
+The reason why this is needed is because the underlying implementation
+might not allow querying the fd more than once between calls to one of
+the re-enabling operations."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_has_closed"
+              c:identifier="gst_poll_fd_has_closed"
+              doc="Check if @fd in @set has closed the connection."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_has_error"
+              c:identifier="gst_poll_fd_has_error"
+              doc="Check if @fd in @set has an error."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_can_read"
+              c:identifier="gst_poll_fd_can_read"
+              doc="Check if @fd in @set has data to be read."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fd_can_write"
+              c:identifier="gst_poll_fd_can_write"
+              doc="Check if @fd in @set can be used for writing."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="PollFD" c:type="GstPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait"
+              c:identifier="gst_poll_wait"
+              doc="Wait for activity on the file descriptors in @set. This function waits up to
+the specified @timeout.  A timeout of #GST_CLOCK_TIME_NONE waits forever.
+For #GstPoll objects created with gst_poll_new(), this function can only be
+called from a single thread at a time.  If called from multiple threads,
+-1 will be returned with errno set to EPERM.
+This is not true for timer #GstPoll objects created with
+gst_poll_new_timer(), where it is allowed to have multiple threads waiting
+simultaneously.
+activity was detected after @timeout. If an error occurs, -1 is returned
+and errno is set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="timeout" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_controllable"
+              c:identifier="gst_poll_set_controllable"
+              doc="When @controllable is %TRUE, this function ensures that future calls to
+gst_poll_wait() will be affected by gst_poll_restart() and
+gst_poll_set_flushing()."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="controllable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="restart"
+              c:identifier="gst_poll_restart"
+              doc="Restart any gst_poll_wait() that is in progress. This function is typically
+used after adding or removing descriptors to @set.
+If @set is not controllable, then this call will have no effect."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_flushing"
+              c:identifier="gst_poll_set_flushing"
+              doc="When @flushing is %TRUE, this function ensures that current and future calls
+to gst_poll_wait() will return -1, with errno set to EBUSY.
+Unsetting the flushing state will restore normal operation of @set."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flushing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_control"
+              c:identifier="gst_poll_write_control"
+              doc="Write a byte to the control socket of the controllable @set.
+This function is mostly useful for timer #GstPoll objects created with
+gst_poll_new_timer().
+It will make any current and future gst_poll_wait() function return with
+1, meaning the control socket is set. After an equal amount of calls to
+gst_poll_read_control() have been performed, calls to gst_poll_wait() will
+block again until their timeout expired.
+byte could not be written."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="read_control"
+              c:identifier="gst_poll_read_control"
+              doc="Read a byte from the control socket of the controllable @set.
+This function is mostly useful for timer #GstPoll objects created with
+gst_poll_new_timer().
+was no byte to read."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="PollFD" c:type="GstPollFD" doc="A file descriptor object.">
+      <field name="fd" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="idx" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <method name="init"
+              c:identifier="gst_poll_fd_init"
+              doc="Initializes @fd. Alternatively you can initialize it with
+#GST_POLL_FD_INIT."
+              version="0.10.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <interface name="Preset"
+               c:type="GstPreset"
+               doc="Opaque #GstPreset data structure."
+               glib:type-name="GstPreset"
+               glib:get-type="gst_preset_get_type"
+               glib:type-struct="PresetInterface">
+      <virtual-method name="get_preset_names" invoker="get_preset_names">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_property_names" invoker="get_property_names">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="load_preset" invoker="load_preset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="save_preset" invoker="save_preset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="rename_preset" invoker="rename_preset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delete_preset" invoker="delete_preset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_meta" invoker="set_meta">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_meta" invoker="get_meta">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_preset_names"
+              c:identifier="gst_preset_get_preset_names"
+              doc="Get a copy of preset names as a NULL terminated string array."
+              version="0.10.20">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_property_names"
+              c:identifier="gst_preset_get_property_names"
+              doc="Get a the names of the GObject properties that can be used for presets."
+              version="0.10.20">
+        <return-value transfer-ownership="full" doc="after use.">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="load_preset"
+              c:identifier="gst_preset_load_preset"
+              doc="Load the given preset."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_preset"
+              c:identifier="gst_preset_save_preset"
+              doc="Save the current object settings as a preset under the given name. If there
+is already a preset by this @name it will be overwritten."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rename_preset"
+              c:identifier="gst_preset_rename_preset"
+              doc="Renames a preset. If there is already a preset by the @new_name it will be
+overwritten."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_preset"
+              c:identifier="gst_preset_delete_preset"
+              doc="Delete the given preset."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_meta"
+              c:identifier="gst_preset_set_meta"
+              doc="Sets a new @value for an existing meta data item or adds a new item. Meta
+data @tag names can be something like e.g. &quot;comment&quot;. Supplying %NULL for the"
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_meta"
+              c:identifier="gst_preset_get_meta"
+              doc="Gets the @value for an existing meta data @tag. Meta data @tag names can be
+something like e.g. &quot;comment&quot;. Returned values need to be released when done.
+or no value for the given @tag"
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="PresetInterface"
+            c:type="GstPresetInterface"
+            glib:is-gtype-struct-for="Preset"
+            doc="#GstPreset interface.">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_preset_names">
+        <callback name="get_preset_names" c:type="get_preset_names">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_property_names">
+        <callback name="get_property_names" c:type="get_property_names">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_preset">
+        <callback name="load_preset" c:type="load_preset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="save_preset">
+        <callback name="save_preset" c:type="save_preset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="rename_preset">
+        <callback name="rename_preset" c:type="rename_preset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="old_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="new_name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_preset">
+        <callback name="delete_preset" c:type="delete_preset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_meta">
+        <callback name="set_meta" c:type="set_meta">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_meta">
+        <callback name="get_meta" c:type="get_meta">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="preset" transfer-ownership="none">
+              <type name="Preset" c:type="GstPreset*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="tag" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <array c:type="gchar**">
+                <type name="utf8"/>
+              </array>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="ProxyPad"
+           c:type="GstProxyPad"
+           parent="Pad"
+           glib:type-name="GstProxyPad"
+           glib:get-type="gst_proxy_pad_get_type"
+           glib:type-struct="ProxyPadClass">
+      <field name="pad">
+        <type name="Pad" c:type="GstPad"/>
+      </field>
+      <field name="priv">
+        <type name="ProxyPadPrivate" c:type="GstProxyPadPrivate*"/>
+      </field>
+    </class>
+    <record name="ProxyPadClass"
+            c:type="GstProxyPadClass"
+            glib:is-gtype-struct-for="ProxyPad">
+      <field name="parent_class">
+        <type name="PadClass" c:type="GstPadClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="ProxyPadPrivate" c:type="GstProxyPadPrivate">
+    </record>
+    <record name="Query" c:type="GstQuery" doc="The #GstQuery structure.">
+      <field name="mini_object" writable="1">
+        <type name="MiniObject" c:type="GstMiniObject"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </field>
+      <field name="structure" writable="1">
+        <type name="Structure" c:type="GstStructure*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <constructor name="new_position"
+                   c:identifier="gst_query_new_position"
+                   doc="Constructs a new query stream position query object. Use gst_query_unref()
+when done with it. A position query is used to query the current position
+of playback in the streams, in some format.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_duration"
+                   c:identifier="gst_query_new_duration"
+                   doc="Constructs a new stream duration query object to query in the given format.
+Use gst_query_unref() when done with it. A duration query will give the
+total length of the stream.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_latency"
+                   c:identifier="gst_query_new_latency"
+                   doc="Constructs a new latency query object.
+Use gst_query_unref() when done with it. A latency query is usually performed
+by sinks to compensate for additional latency introduced by elements in the
+pipeline."
+                   version="0.10.12">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_convert"
+                   c:identifier="gst_query_new_convert"
+                   doc="Constructs a new convert query object. Use gst_query_unref()
+when done with it. A convert query is used to ask for a conversion between
+one format and another.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_segment"
+                   c:identifier="gst_query_new_segment"
+                   doc="Constructs a new segment query object. Use gst_query_unref()
+when done with it. A segment query is used to discover information about the
+currently configured segment for playback.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_application"
+                   c:identifier="gst_query_new_application"
+                   doc="Constructs a new custom application query object. Use gst_query_unref()
+when done with it.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="QueryType" c:type="GstQueryType"/>
+          </parameter>
+          <parameter name="structure" transfer-ownership="none">
+            <type name="Structure" c:type="GstStructure*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_seeking"
+                   c:identifier="gst_query_new_seeking"
+                   doc="Constructs a new query object for querying seeking properties of
+the stream.">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_formats"
+                   c:identifier="gst_query_new_formats"
+                   doc="Constructs a new query object for querying formats of
+the stream."
+                   version="0.10.4">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_buffering" c:identifier="gst_query_new_buffering">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_uri"
+                   c:identifier="gst_query_new_uri"
+                   doc="Constructs a new query URI query object. Use gst_query_unref()
+when done with it. An URI query is used to query the current URI
+that is used by the source or sink."
+                   version="0.10.22">
+        <return-value transfer-ownership="full">
+          <type name="Query" c:type="GstQuery*"/>
+        </return-value>
+      </constructor>
+      <method name="set_position"
+              c:identifier="gst_query_set_position"
+              doc="Answer a position query by setting the requested value in the given format.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="cur" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_position"
+              c:identifier="gst_query_parse_position"
+              doc="Parse a position query, writing the format into @format, and the position
+into @cur, if the respective parameters are non-NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="cur" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="gst_query_set_duration"
+              doc="Answer a duration query by setting the requested value in the given format.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_duration"
+              c:identifier="gst_query_parse_duration"
+              doc="Parse a duration query answer. Write the format of the duration into @format,
+and the value into @duration, if the respective variables are non-NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="duration" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_latency"
+              c:identifier="gst_query_set_latency"
+              doc="Answer a latency query by setting the requested values in the given format."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="min_latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+          <parameter name="max_latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_latency"
+              c:identifier="gst_query_parse_latency"
+              doc="Parse a latency query answer."
+              version="0.10.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="live" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="min_latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+          <parameter name="max_latency" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_convert"
+              c:identifier="gst_query_set_convert"
+              doc="Answer a convert query by setting the requested values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="src_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="dest_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_convert"
+              c:identifier="gst_query_parse_convert"
+              doc="Parse a convert query answer. Any of @src_format, @src_value, @dest_format,
+and @dest_value may be NULL, in which case that value is omitted.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="src_value"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="dest_format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="dest_value"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_segment"
+              c:identifier="gst_query_set_segment"
+              doc="Answer a segment query by setting the requested values. The normal
+playback segment of a pipeline is 0 to duration at the default rate of
+1.0. If a seek was performed on the pipeline to play a different
+segment, this query will return the range specified in the last seek.
+playback range start and stop values expressed in @format.
+The values are always between 0 and the duration of the media and
+negative rates, playback will actually happen from @stop_value to">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_segment"
+              c:identifier="gst_query_parse_segment"
+              doc="Parse a segment query answer. Any of @rate, @format, @start_value, and
+See gst_query_set_segment() for an explanation of the function arguments.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start_value"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop_value"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_structure"
+              c:identifier="gst_query_get_structure"
+              doc="Get the structure of a query.
+by the query and will therefore be freed when the query is unreffed.">
+        <return-value transfer-ownership="full">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="set_seeking"
+              c:identifier="gst_query_set_seeking"
+              doc="Set the seeking query result fields in @query.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="seekable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="segment_start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="segment_end" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_seeking"
+              c:identifier="gst_query_parse_seeking"
+              doc="Parse a seeking query, writing the format into @format, and
+other results into the passed parameters, if the respective parameters
+are non-NULL">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="seekable" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="segment_start"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="segment_end"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_formats"
+              c:identifier="gst_query_set_formats"
+              doc="Set the formats query result fields in @query. The number of formats passed
+must be equal to @n_formats.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_formatsv"
+              c:identifier="gst_query_set_formatsv"
+              doc="Set the formats query result fields in @query. The number of formats passed
+in the @formats array must be equal to @n_formats."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="formats" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_formats_length"
+              c:identifier="gst_query_parse_formats_length"
+              doc="Parse the number of formats in the formats @query."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_formats_nth"
+              c:identifier="gst_query_parse_formats_nth"
+              doc="Parse the format query and retrieve the @nth format from it into
+set to GST_FORMAT_UNDEFINED."
+              version="0.10.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="nth" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_percent"
+              c:identifier="gst_query_set_buffering_percent">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="busy" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="percent" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_percent"
+              c:identifier="gst_query_parse_buffering_percent">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="busy" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="percent" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_stats"
+              c:identifier="gst_query_set_buffering_stats"
+              doc="Configures the buffering stats values in @query."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="BufferingMode" c:type="GstBufferingMode"/>
+          </parameter>
+          <parameter name="avg_in" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="avg_out" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="buffering_left" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_stats"
+              c:identifier="gst_query_parse_buffering_stats"
+              doc="Extracts the buffering stats values from @query."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="BufferingMode" c:type="GstBufferingMode*"/>
+          </parameter>
+          <parameter name="avg_in" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="avg_out" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="buffering_left"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buffering_range"
+              c:identifier="gst_query_set_buffering_range"
+              doc="Set the available query result fields in @query."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="estimated_total" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_buffering_range"
+              c:identifier="gst_query_parse_buffering_range"
+              doc="Parse an available query, writing the format into @format, and
+other results into the passed parameters, if the respective parameters
+are non-NULL"
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat*"/>
+          </parameter>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="stop" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="estimated_total"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_uri"
+              c:identifier="gst_query_parse_uri"
+              doc="Parse an URI query, writing the URI into @uri as a newly
+allocated string, if the respective parameters are non-NULL.
+Free the string with g_free() after usage."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uri"
+              c:identifier="gst_query_set_uri"
+              doc="Answer a URI query by setting the requested URI."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="QueryClass" c:type="GstQueryClass">
+      <field name="mini_object_class" writable="1">
+        <type name="MiniObjectClass" c:type="GstMiniObjectClass"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="QueryType"
+                 doc="0.10.20.
+0.10.22.
+Standard predefined Query types"
+                 c:type="GstQueryType">
+      <member name="none" value="0" c:identifier="GST_QUERY_NONE"/>
+      <member name="position" value="1" c:identifier="GST_QUERY_POSITION"/>
+      <member name="duration" value="2" c:identifier="GST_QUERY_DURATION"/>
+      <member name="latency" value="3" c:identifier="GST_QUERY_LATENCY"/>
+      <member name="jitter" value="4" c:identifier="GST_QUERY_JITTER"/>
+      <member name="rate" value="5" c:identifier="GST_QUERY_RATE"/>
+      <member name="seeking" value="6" c:identifier="GST_QUERY_SEEKING"/>
+      <member name="segment" value="7" c:identifier="GST_QUERY_SEGMENT"/>
+      <member name="convert" value="8" c:identifier="GST_QUERY_CONVERT"/>
+      <member name="formats" value="9" c:identifier="GST_QUERY_FORMATS"/>
+      <member name="buffering" value="10" c:identifier="GST_QUERY_BUFFERING"/>
+      <member name="custom" value="11" c:identifier="GST_QUERY_CUSTOM"/>
+      <member name="uri" value="12" c:identifier="GST_QUERY_URI"/>
+    </enumeration>
+    <record name="QueryTypeDefinition"
+            c:type="GstQueryTypeDefinition"
+            doc="A Query Type definition">
+      <field name="value" writable="1">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </field>
+      <field name="nick" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="description" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="quark" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+    </record>
+    <enumeration name="Rank"
+                 doc="Element priority ranks. Defines the order in which the autoplugger (or
+similar rank-picking mechanisms, such as e.g. gst_element_make_from_uri())
+will choose this element over an alternative one with the same function.
+These constants serve as a rough guidance for defining the rank of a
+#GstPluginFeature. Any value is valid, including values bigger than"
+                 c:type="GstRank">
+      <member name="none" value="0" c:identifier="GST_RANK_NONE"/>
+      <member name="marginal" value="64" c:identifier="GST_RANK_MARGINAL"/>
+      <member name="secondary" value="128" c:identifier="GST_RANK_SECONDARY"/>
+      <member name="primary" value="256" c:identifier="GST_RANK_PRIMARY"/>
+    </enumeration>
+    <class name="Registry"
+           c:type="GstRegistry"
+           doc="Opaque #GstRegistry structure."
+           parent="Object"
+           glib:type-name="GstRegistry"
+           glib:get-type="gst_registry_get_type"
+           glib:type-struct="RegistryClass">
+      <function name="get_default"
+                c:identifier="gst_registry_get_default"
+                doc="Retrieves the default registry. The caller does not own a reference on the
+registry, as it is alive as long as GStreamer is initialized.">
+        <return-value transfer-ownership="full">
+          <type name="Registry" c:type="GstRegistry*"/>
+        </return-value>
+      </function>
+      <function name="fork_is_enabled"
+                c:identifier="gst_registry_fork_is_enabled"
+                doc="By default GStreamer will perform scanning and rebuilding of the
+registry file using a helper child process.
+Applications might want to disable this behaviour with the
+gst_registry_fork_set_enabled() function, in which case new plugins
+are scanned (and loaded) into the application process.
+rebuilding the registry."
+                version="0.10.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </function>
+      <function name="fork_set_enabled"
+                c:identifier="gst_registry_fork_set_enabled"
+                doc="Applications might want to disable/enable spawning of a child helper process
+when rebuilding the registry. See gst_registry_fork_is_enabled() for more
+information."
+                version="0.10.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enabled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="scan_path"
+              c:identifier="gst_registry_scan_path"
+              doc="Scan the given path for plugins to add to the registry. The syntax of the
+path is specific to the registry.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_path"
+              c:identifier="gst_registry_add_path"
+              doc="Add the given path to the registry. The syntax of the
+path is specific to the registry. If the path has already been
+added, do nothing.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_path_list"
+              c:identifier="gst_registry_get_path_list"
+              doc="Get the list of paths for the given registry.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="add_plugin"
+              c:identifier="gst_registry_add_plugin"
+              doc="Add the plugin to the registry. The plugin-added signal will be emitted.
+This function will sink @plugin.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_plugin"
+              c:identifier="gst_registry_remove_plugin"
+              doc="Remove the plugin from the registry.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="Plugin" c:type="GstPlugin*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_feature"
+              c:identifier="gst_registry_add_feature"
+              doc="Add the feature to the registry. The feature-added signal will be emitted.
+This function sinks @feature.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <type name="PluginFeature" c:type="GstPluginFeature*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_feature"
+              c:identifier="gst_registry_remove_feature"
+              doc="Remove the feature from the registry.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <type name="PluginFeature" c:type="GstPluginFeature*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_plugin_list"
+              c:identifier="gst_registry_get_plugin_list"
+              doc="Get a copy of all plugins registered in the given registry. The refcount
+of each element in the list in incremented.
+MT safe.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="plugin_filter"
+              c:identifier="gst_registry_plugin_filter"
+              doc="Runs a filter against all plugins in the registry and returns a #GList with
+the results. If the first flag is set, only the first match is
+returned (as a list with a single object).
+Every plugin is reffed; use gst_plugin_list_free() after use, which
+will unref again.
+MT safe.">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none" scope="call">
+            <type name="PluginFilter" c:type="GstPluginFilter"/>
+          </parameter>
+          <parameter name="first" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="feature_filter"
+              c:identifier="gst_registry_feature_filter"
+              doc="Runs a filter against all features of the plugins in the registry
+and returns a GList with the results.
+If the first flag is set, only the first match is
+returned (as a list with a single object).
+after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none" scope="call">
+            <type name="PluginFeatureFilter" c:type="GstPluginFeatureFilter"/>
+          </parameter>
+          <parameter name="first" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_feature_list"
+              c:identifier="gst_registry_get_feature_list"
+              doc="Retrieves a #GList of #GstPluginFeature of @type.
+gst_plugin_feature_list_free() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_feature_list_by_plugin"
+              c:identifier="gst_registry_get_feature_list_by_plugin"
+              doc="Retrieves a #GList of features of the plugin with name @name.
+after usage.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_feature_list_cookie"
+              c:identifier="gst_registry_get_feature_list_cookie"
+              doc="Returns the registrys feature list cookie. This changes
+every time a feature is added or removed from the registry."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="find_plugin"
+              c:identifier="gst_registry_find_plugin"
+              doc="Find the plugin with the given name in the registry.
+The plugin will be reffed; caller is responsible for unreffing.
+gst_object_unref() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_feature"
+              c:identifier="gst_registry_find_feature"
+              doc="Find the pluginfeature with the given name and type in the registry.
+if the plugin was not found. gst_object_unref() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup"
+              c:identifier="gst_registry_lookup"
+              doc="Look up a plugin in the given registry with the given filename.
+If found, plugin is reffed.
+after usage.">
+        <return-value transfer-ownership="full">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_feature"
+              c:identifier="gst_registry_lookup_feature"
+              doc="Find a #GstPluginFeature with @name in @registry.
+gst_object_unref() after usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="PluginFeature" c:type="GstPluginFeature*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xml_read_cache" c:identifier="gst_registry_xml_read_cache">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="location" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xml_write_cache"
+              c:identifier="gst_registry_xml_write_cache">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="location" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="plugins">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="features">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="paths">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="cache_file">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="feature_hash">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="basename_hash">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="priv">
+        <type name="RegistryPrivate" c:type="GstRegistryPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="1">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="feature-added"
+                   doc="Signals that a feature has been added to the registry (possibly
+replacing a previously-added one by the same name)">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="feature" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="plugin-added"
+                   doc="Signals that a plugin has been added to the registry (possibly
+replacing a previously-added one by the same name)">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="plugin" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="RegistryClass"
+            c:type="GstRegistryClass"
+            glib:is-gtype-struct-for="Registry">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="plugin_added">
+        <callback name="plugin_added" c:type="plugin_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="registry" transfer-ownership="none">
+              <type name="Registry" c:type="GstRegistry*"/>
+            </parameter>
+            <parameter name="plugin" transfer-ownership="none">
+              <type name="Plugin" c:type="GstPlugin*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="feature_added">
+        <callback name="feature_added" c:type="feature_added">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="registry" transfer-ownership="none">
+              <type name="Registry" c:type="GstRegistry*"/>
+            </parameter>
+            <parameter name="feature" transfer-ownership="none">
+              <type name="PluginFeature" c:type="GstPluginFeature*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="RegistryPrivate" c:type="GstRegistryPrivate">
+    </record>
+    <enumeration name="ResourceError"
+                 doc="category.  Make sure you add a custom message to the error call.
+deciding where to go while developing code.
+both reading and writing, or either (but unspecified which).
+Resource errors are for any resource used by an element:
+memory, files, network connections, process space, ...
+They&apos;re typically used by source and sink elements."
+                 c:type="GstResourceError"
+                 glib:error-quark="gst_resource_error_quark">
+      <member name="failed"
+              value="1"
+              c:identifier="GST_RESOURCE_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_RESOURCE_ERROR_TOO_LAZY"/>
+      <member name="not_found"
+              value="3"
+              c:identifier="GST_RESOURCE_ERROR_NOT_FOUND"/>
+      <member name="busy" value="4" c:identifier="GST_RESOURCE_ERROR_BUSY"/>
+      <member name="open_read"
+              value="5"
+              c:identifier="GST_RESOURCE_ERROR_OPEN_READ"/>
+      <member name="open_write"
+              value="6"
+              c:identifier="GST_RESOURCE_ERROR_OPEN_WRITE"/>
+      <member name="open_read_write"
+              value="7"
+              c:identifier="GST_RESOURCE_ERROR_OPEN_READ_WRITE"/>
+      <member name="close" value="8" c:identifier="GST_RESOURCE_ERROR_CLOSE"/>
+      <member name="read" value="9" c:identifier="GST_RESOURCE_ERROR_READ"/>
+      <member name="write" value="10" c:identifier="GST_RESOURCE_ERROR_WRITE"/>
+      <member name="seek" value="11" c:identifier="GST_RESOURCE_ERROR_SEEK"/>
+      <member name="sync" value="12" c:identifier="GST_RESOURCE_ERROR_SYNC"/>
+      <member name="settings"
+              value="13"
+              c:identifier="GST_RESOURCE_ERROR_SETTINGS"/>
+      <member name="no_space_left"
+              value="14"
+              c:identifier="GST_RESOURCE_ERROR_NO_SPACE_LEFT"/>
+      <member name="num_errors"
+              value="15"
+              c:identifier="GST_RESOURCE_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <constant name="SECOND" value="0">
+      <type name="int"/>
+    </constant>
+    <enumeration name="SearchMode"
+                 doc="The different search modes."
+                 version="0.10.23"
+                 c:type="GstSearchMode">
+      <member name="exact" value="0" c:identifier="GST_SEARCH_MODE_EXACT"/>
+      <member name="before" value="1" c:identifier="GST_SEARCH_MODE_BEFORE"/>
+      <member name="after" value="2" c:identifier="GST_SEARCH_MODE_AFTER"/>
+    </enumeration>
+    <bitfield name="SeekFlags"
+              doc="be considerably slower for some formats.
+faster but less accurate.
+elements to skip frames instead of generating all
+frames. Since 0.10.22.
+Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags
+can be used together.
+A non flushing seek might take some time to perform as the currently
+playing data in the pipeline will not be cleared.
+An accurate seek might be slower for formats that don&apos;t have any indexes
+or timestamp markers in the stream. Specifying this flag might require a
+complete scan of the file in those cases.
+no EOS will be emmited by the element that performed the seek, but a
+#GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element.
+When this message is posted, it is possible to send a new seek event to
+continue playback. With this seek method it is possible to perform seemless
+looping or simple linear editing.
+When doing fast forward (rate &gt; 1.0) or fast reverse (rate &lt; -1.0) trickmode
+playback, the @GST_SEEK_FLAG_SKIP flag can be used to instruct decoders
+and demuxers to adjust the playback rate by skipping frames. This can improve
+performance and decrease CPU usage because not all frames need to be decoded."
+              c:type="GstSeekFlags">
+      <member name="none" value="0" c:identifier="GST_SEEK_FLAG_NONE"/>
+      <member name="flush" value="1" c:identifier="GST_SEEK_FLAG_FLUSH"/>
+      <member name="accurate" value="2" c:identifier="GST_SEEK_FLAG_ACCURATE"/>
+      <member name="key_unit" value="4" c:identifier="GST_SEEK_FLAG_KEY_UNIT"/>
+      <member name="segment" value="8" c:identifier="GST_SEEK_FLAG_SEGMENT"/>
+      <member name="skip" value="16" c:identifier="GST_SEEK_FLAG_SKIP"/>
+    </bitfield>
+    <enumeration name="SeekType"
+                 doc="can&apos;t be used to seek relative to the current playback position - do a
+position query, calculate the desired position and then do an absolute
+position seek instead if that&apos;s what you want to do.
+The different types of seek events. When constructing a seek event with
+gst_event_new_seek(), a format, a seek method and optional flags are to
+be provided. The seek event is then inserted into the graph with
+gst_pad_send_event() or gst_element_send_event()."
+                 c:type="GstSeekType">
+      <member name="none" value="0" c:identifier="GST_SEEK_TYPE_NONE"/>
+      <member name="cur" value="1" c:identifier="GST_SEEK_TYPE_CUR"/>
+      <member name="set" value="2" c:identifier="GST_SEEK_TYPE_SET"/>
+      <member name="end" value="3" c:identifier="GST_SEEK_TYPE_END"/>
+    </enumeration>
+    <record name="Segment"
+            c:type="GstSegment"
+            doc="A helper structure that holds the configured region of
+interest in a media file."
+            glib:type-name="GstSegment"
+            glib:get-type="gst_segment_get_type">
+      <field name="rate" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="abs_rate" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="format" writable="1">
+        <type name="Format" c:type="GstFormat"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="SeekFlags" c:type="GstSeekFlags"/>
+      </field>
+      <field name="start" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="stop" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="accum" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="last_stop" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="duration" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="applied_rate" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="guint8" fixed-size="0">
+          <type name="uint8"/>
+        </array>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_segment_new"
+                   doc="Allocate a new #GstSegment structure and initialize it using
+gst_segment_init().">
+        <return-value transfer-ownership="full">
+          <type name="Segment" c:type="GstSegment*"/>
+        </return-value>
+      </constructor>
+      <method name="copy"
+              c:identifier="gst_segment_copy"
+              doc="Create a copy of given @segment."
+              version="0.10.20">
+        <return-value transfer-ownership="full">
+          <type name="Segment" c:type="GstSegment*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gst_segment_free"
+              doc="Free the allocated segment @segment.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init"
+              c:identifier="gst_segment_init"
+              doc="The start/last_stop positions are set to 0 and the stop/duration
+fields are set to -1 (unknown). The default rate of 1.0 and no
+flags are set.
+Initialize @segment to its default values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_duration"
+              c:identifier="gst_segment_set_duration"
+              doc="Set the duration of the segment to @duration. This function is mainly
+used by elements that perform seeking and know the total duration of the
+segment.
+This field should be set to allow seeking requests relative to the
+duration.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="duration" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_last_stop"
+              c:identifier="gst_segment_set_last_stop"
+              doc="Set the last observed stop position in the segment to @position.
+This field should be set to allow seeking requests relative to the
+current playing position.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_seek"
+              c:identifier="gst_segment_set_seek"
+              doc="Update the segment structure with the field values of a seek event (see
+gst_event_new_seek()).
+After calling this method, the segment field last_stop and time will
+contain the requested new position in the segment. The new requested
+position in the segment depends on @rate and @start_type and @stop_type.
+For positive @rate, the new position in the segment is the new @segment
+start field when it was updated with a @start_type different from
+#GST_SEEK_TYPE_NONE. If no update was performed on @segment start position
+(#GST_SEEK_TYPE_NONE), @start is ignored and @segment last_stop is
+unmodified.
+For negative @rate, the new position in the segment is the new @segment
+stop field when it was updated with a @stop_type different from
+#GST_SEEK_TYPE_NONE. If no stop was previously configured in the segment, the
+duration of the segment will be used to update the stop position.
+If no update was performed on @segment stop position (#GST_SEEK_TYPE_NONE),
+The applied rate of the segment will be set to 1.0 by default.
+If the caller can apply a rate change, it should update @segment
+rate and applied_rate after calling this function.
+last_stop field. This field can be FALSE if, for example, only the @rate
+has been changed but not the playback position.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="SeekFlags" c:type="GstSeekFlags"/>
+          </parameter>
+          <parameter name="start_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop_type" transfer-ownership="none">
+            <type name="SeekType" c:type="GstSeekType"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="update" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_newsegment"
+              c:identifier="gst_segment_set_newsegment"
+              doc="Update the segment structure with the field values of a new segment event and
+with a default applied_rate of 1.0."
+              version="0.10.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_newsegment_full"
+              c:identifier="gst_segment_set_newsegment_full"
+              doc="Update the segment structure with the field values of a new segment event.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="applied_rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_stream_time"
+              c:identifier="gst_segment_to_stream_time"
+              doc="Translate @position to stream time using the currently configured
+segment. The @position value must be between @segment start and
+stop value.
+This function is typically used by elements that need to operate on
+the stream time of the buffers it receives, such as effect plugins.
+In those use cases, @position is typically the buffer timestamp or
+clock time that one wants to convert to the stream time.
+The stream time is always between 0 and the total duration of the
+media stream.
+was given.">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_running_time"
+              c:identifier="gst_segment_to_running_time"
+              doc="Translate @position to the total running time using the currently configured
+and previously accumulated segments. Position is a value between @segment
+start and stop time.
+This function is typically used by elements that need to synchronize to the
+global clock in a pipeline. The runnning time is a constantly increasing value
+starting from 0. When gst_segment_init() is called, this value will reset to
+0.
+This function returns -1 if the position is outside of @segment start and stop.
+was given.">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_position"
+              c:identifier="gst_segment_to_position"
+              doc="Convert @running_time into a position in the segment so that
+gst_segment_to_running_time() with that position returns @running_time.
+-1 when @running_time is -1 or when it is not inside @segment."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="running_time" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clip"
+              c:identifier="gst_segment_clip"
+              doc="Clip the given @start and @stop values to the segment boundaries given
+in @segment. @start and @stop are compared and clipped to @segment
+start and stop values.
+If the function returns FALSE, @start and @stop are known to fall
+outside of @segment and @clip_start and @clip_stop are not updated.
+When the function returns TRUE, @clip_start and @clip_stop will be
+updated. If @clip_start or @clip_stop are different from @start or @stop
+respectively, the region fell partially in the segment.
+Note that when @stop is -1, @clip_stop will be set to the end of the
+segment. Depending on the use case, this may or may not be what you want.
+completely in @segment, FALSE if the values are completely outside
+of the segment.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="clip_start"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+          <parameter name="clip_stop"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_running_time"
+              c:identifier="gst_segment_set_running_time"
+              doc="Adjust the start/stop and accum values of @segment such that the next valid
+buffer will be one with @running_time.
+returned, @running_time is -1 or not in @segment."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Format" c:type="GstFormat"/>
+          </parameter>
+          <parameter name="running_time" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="State"
+                 doc="process data. Sink elements however only accept one
+buffer and then block.
+the data is flowing.
+The possible states an element can be in. States can be changed using
+gst_element_set_state() and checked using gst_element_get_state()."
+                 c:type="GstState">
+      <member name="void_pending"
+              value="0"
+              c:identifier="GST_STATE_VOID_PENDING"/>
+      <member name="null" value="1" c:identifier="GST_STATE_NULL"/>
+      <member name="ready" value="2" c:identifier="GST_STATE_READY"/>
+      <member name="paused" value="3" c:identifier="GST_STATE_PAUSED"/>
+      <member name="playing" value="4" c:identifier="GST_STATE_PLAYING"/>
+    </enumeration>
+    <bitfield name="StateChange"
+              doc="&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element must check if the resources it needs are available. Device
+sinks and -sources typically try to probe the device to constrain their
+caps.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element opens the device (in case feature need to be probed).
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element pads are activated in order to receive data in PAUSED.
+Streaming threads are started.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Some elements might need to return ASYNC and complete the state change
+when they have enough information. It is a requirement for sinks to
+return ASYNC and complete the state change when they receive the first
+buffer or EOS event (preroll). Sinks also block the dataflow when in
+PAUSED.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+A pipeline resets the running_time to 0.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Live sources return NO_PREROLL and don&apos;t generate data.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Most elements ignore this state change.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The pipeline selects a clock and distributes this to all the children
+before setting them to PLAYING. This means that it is only alowed to
+synchronize on the clock in the PLAYING state.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The pipeline uses the clock and the running_time to calculate the
+base_time. The base_time is distributed to all children when performing
+the state change.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Sink elements stop blocking on the preroll buffer or event and start
+rendering the data.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Sinks can post the EOS message in the PLAYING state. It is not allowed to
+post EOS when not in the PLAYING state.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+While streaming in PAUSED or PLAYING elements can create and remove
+sometimes pads.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Live sources start generating data and return SUCCESS.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Most elements ignore this state change.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The pipeline calculates the running_time based on the last selected clock
+and the base_time. It stores this information to continue playback when
+going back to the PLAYING state.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Sinks unblock any clock wait calls.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+When a sink does not have a pending buffer to play, it returns ASYNC from
+this state change and completes the state change when it receives a new
+buffer or an EOS event.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Any queued EOS messages are removed since they will be reposted when going
+back to the PLAYING state. The EOS messages are queued in GstBins.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Live sources stop generating data and return NO_PREROLL.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Sinks unblock any waits in the preroll.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements unblock any waits on devices
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Chain or get_range functions return WRONG_STATE.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The element pads are deactivated so that streaming becomes impossible and
+all streaming threads are stopped.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+The sink forgets all negotiated formats
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements remove all sometimes pads
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+&lt;itemizedlist&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements close devices
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+Elements reset any internal state.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+These are the different state changes an element goes through.
+%GST_STATE_NULL &amp;rArr; %GST_STATE_PLAYING is called an upwards state change
+and %GST_STATE_PLAYING &amp;rArr; %GST_STATE_NULL a downwards state change."
+              c:type="GstStateChange">
+      <member name="null_to_ready"
+              value="10"
+              c:identifier="GST_STATE_CHANGE_NULL_TO_READY"/>
+      <member name="ready_to_paused"
+              value="19"
+              c:identifier="GST_STATE_CHANGE_READY_TO_PAUSED"/>
+      <member name="paused_to_playing"
+              value="28"
+              c:identifier="GST_STATE_CHANGE_PAUSED_TO_PLAYING"/>
+      <member name="playing_to_paused"
+              value="35"
+              c:identifier="GST_STATE_CHANGE_PLAYING_TO_PAUSED"/>
+      <member name="paused_to_ready"
+              value="26"
+              c:identifier="GST_STATE_CHANGE_PAUSED_TO_READY"/>
+      <member name="ready_to_null"
+              value="17"
+              c:identifier="GST_STATE_CHANGE_READY_TO_NULL"/>
+    </bitfield>
+    <enumeration name="StateChangeReturn"
+                 doc="cannot produce data in %GST_STATE_PAUSED.
+This typically happens with live sources.
+The possible return values from a state change function. Only"
+                 c:type="GstStateChangeReturn">
+      <member name="failure"
+              value="0"
+              c:identifier="GST_STATE_CHANGE_FAILURE"/>
+      <member name="success"
+              value="1"
+              c:identifier="GST_STATE_CHANGE_SUCCESS"/>
+      <member name="async" value="2" c:identifier="GST_STATE_CHANGE_ASYNC"/>
+      <member name="no_preroll"
+              value="3"
+              c:identifier="GST_STATE_CHANGE_NO_PREROLL"/>
+    </enumeration>
+    <record name="StaticCaps"
+            c:type="GstStaticCaps"
+            doc="Datastructure to initialize #GstCaps from a string description usually
+used in conjunction with GST_STATIC_CAPS() and gst_static_caps_get() to
+instantiate a #GstCaps.">
+      <field name="caps" writable="1">
+        <type name="Caps" c:type="GstCaps"/>
+      </field>
+      <field name="string" writable="1">
+        <type name="utf8" c:type="char*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="get"
+              c:identifier="gst_static_caps_get"
+              doc="Converts a #GstStaticCaps to a #GstCaps.
+core holds an additional ref to the returned caps,
+use gst_caps_make_writable() on the returned caps to modify it.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="StaticPadTemplate" c:type="GstStaticPadTemplate">
+      <field name="name_template" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="direction" writable="1">
+        <type name="PadDirection" c:type="GstPadDirection"/>
+      </field>
+      <field name="presence" writable="1">
+        <type name="PadPresence" c:type="GstPadPresence"/>
+      </field>
+      <field name="static_caps" writable="1">
+        <type name="StaticCaps" c:type="GstStaticCaps"/>
+      </field>
+      <method name="get"
+              c:identifier="gst_static_pad_template_get"
+              doc="Converts a #GstStaticPadTemplate into a #GstPadTemplate.">
+        <return-value transfer-ownership="full">
+          <type name="PadTemplate" c:type="GstPadTemplate*"/>
+        </return-value>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_static_pad_template_get_caps"
+              doc="Gets the capabilities of the static pad template.
+Unref after usage. Since the core holds an additional
+ref to the returned caps, use gst_caps_make_writable()
+on the returned caps to modify it.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="StreamError"
+                 doc="category.  Make sure you add a custom message to the error call.
+deciding where to go while developing code.
+this functionality yet.
+stream&apos;s type.
+of stream.
+stream&apos;s type.
+(for example, wrong caps).
+Stream errors are for anything related to the stream being processed:
+format errors, media type errors, ...
+They&apos;re typically used by decoders, demuxers, converters, ..."
+                 c:type="GstStreamError"
+                 glib:error-quark="gst_stream_error_quark">
+      <member name="failed" value="1" c:identifier="GST_STREAM_ERROR_FAILED"/>
+      <member name="too_lazy"
+              value="2"
+              c:identifier="GST_STREAM_ERROR_TOO_LAZY"/>
+      <member name="not_implemented"
+              value="3"
+              c:identifier="GST_STREAM_ERROR_NOT_IMPLEMENTED"/>
+      <member name="type_not_found"
+              value="4"
+              c:identifier="GST_STREAM_ERROR_TYPE_NOT_FOUND"/>
+      <member name="wrong_type"
+              value="5"
+              c:identifier="GST_STREAM_ERROR_WRONG_TYPE"/>
+      <member name="codec_not_found"
+              value="6"
+              c:identifier="GST_STREAM_ERROR_CODEC_NOT_FOUND"/>
+      <member name="decode" value="7" c:identifier="GST_STREAM_ERROR_DECODE"/>
+      <member name="encode" value="8" c:identifier="GST_STREAM_ERROR_ENCODE"/>
+      <member name="demux" value="9" c:identifier="GST_STREAM_ERROR_DEMUX"/>
+      <member name="mux" value="10" c:identifier="GST_STREAM_ERROR_MUX"/>
+      <member name="format" value="11" c:identifier="GST_STREAM_ERROR_FORMAT"/>
+      <member name="decrypt"
+              value="12"
+              c:identifier="GST_STREAM_ERROR_DECRYPT"/>
+      <member name="decrypt_nokey"
+              value="13"
+              c:identifier="GST_STREAM_ERROR_DECRYPT_NOKEY"/>
+      <member name="num_errors"
+              value="14"
+              c:identifier="GST_STREAM_ERROR_NUM_ERRORS"/>
+    </enumeration>
+    <enumeration name="StreamStatusType"
+                 doc="The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the
+application of new streaming threads and their status."
+                 version="0.10.24"
+                 c:type="GstStreamStatusType">
+      <member name="create"
+              value="0"
+              c:identifier="GST_STREAM_STATUS_TYPE_CREATE"/>
+      <member name="enter"
+              value="1"
+              c:identifier="GST_STREAM_STATUS_TYPE_ENTER"/>
+      <member name="leave"
+              value="2"
+              c:identifier="GST_STREAM_STATUS_TYPE_LEAVE"/>
+      <member name="destroy"
+              value="3"
+              c:identifier="GST_STREAM_STATUS_TYPE_DESTROY"/>
+      <member name="start"
+              value="8"
+              c:identifier="GST_STREAM_STATUS_TYPE_START"/>
+      <member name="pause"
+              value="9"
+              c:identifier="GST_STREAM_STATUS_TYPE_PAUSE"/>
+      <member name="stop"
+              value="10"
+              c:identifier="GST_STREAM_STATUS_TYPE_STOP"/>
+    </enumeration>
+    <record name="Structure"
+            c:type="GstStructure"
+            doc="The GstStructure object. Most fields are private."
+            glib:type-name="GstStructure"
+            glib:get-type="gst_structure_get_type">
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="name" writable="1">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </field>
+      <field name="parent_refcount" writable="1">
+        <type name="any" c:type="gint*"/>
+      </field>
+      <field name="fields" writable="1">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_structure_new"
+                   doc="Creates a new #GstStructure with the given name.  Parses the
+list of variable arguments and sets fields to the values listed.
+Variable arguments should be passed as field name, field type,
+and value.  Last variable argument should be NULL.">
+        <return-value transfer-ownership="full">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="firstfield" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gst_structure_copy"
+              doc="Duplicates a #GstStructure and all its fields and values.">
+        <return-value transfer-ownership="full">
+          <type name="Structure" c:type="GstStructure*"/>
+        </return-value>
+      </method>
+      <method name="set_parent_refcount"
+              c:identifier="gst_structure_set_parent_refcount"
+              doc="Sets the parent_refcount field of #GstStructure. This field is used to
+determine whether a structure is mutable or not. This function should only be
+called by code implementing parent objects of #GstStructure, as described in
+the MT Refcounting section of the design documents.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="refcount" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_structure_free"
+              doc="Frees a #GstStructure and all its fields and values. The structure must not
+have a parent when this function is called.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gst_structure_get_name"
+              doc="Get the name of @structure as a string.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_name_id"
+              c:identifier="gst_structure_get_name_id"
+              doc="Get the name of @structure as a GQuark.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </return-value>
+      </method>
+      <method name="has_name"
+              c:identifier="gst_structure_has_name"
+              doc="Checks if the structure has the given name">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name"
+              c:identifier="gst_structure_set_name"
+              doc="Sets the name of the structure to the given @name.  The string
+provided is copied before being used. It must not be empty, start with a
+letter and can be followed by letters, numbers and any of &quot;/-_.:&quot;.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_set_value"
+              c:identifier="gst_structure_id_set_value"
+              doc="Sets the field with the given GQuark @field to @value.  If the field
+does not exist, it is created.  If the field exists, the previous
+value is replaced and freed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="gst_structure_set_value"
+              doc="Sets the field with the given name @field to @value.  If the field
+does not exist, it is created.  If the field exists, the previous
+value is replaced and freed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="gst_structure_set"
+              doc="Parses the variable arguments and sets fields accordingly.
+Variable arguments should be in the form field name, field type
+(as a GType), value(s).  The last variable argument should be NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_set"
+              c:identifier="gst_structure_id_set"
+              doc="Identical to gst_structure_set, except that field names are
+passed using the GQuark for the field name. This allows more efficient
+setting of the structure if the caller already knows the associated
+quark values.
+The last variable argument must be NULL."
+              version="0.10.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get"
+              c:identifier="gst_structure_get"
+              doc="Parses the variable arguments and reads fields from @structure accordingly.
+Variable arguments should be in the form field name, field type
+(as a GType), pointer(s) to a variable(s) to hold the return value(s).
+The last variable argument should be NULL.
+For refcounted (mini)objects you will acquire your own reference which
+you must release with a suitable _unref() when no longer needed. For
+strings and boxed types you will acquire a copy which you will need to
+release with either g_free() or the suiteable function for the boxed type.
+because the field requested did not exist, or was of a type other
+than the type specified), otherwise TRUE."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_get"
+              c:identifier="gst_structure_id_get"
+              doc="Parses the variable arguments and reads fields from @structure accordingly.
+Variable arguments should be in the form field id quark, field type
+(as a GType), pointer(s) to a variable(s) to hold the return value(s).
+The last variable argument should be NULL (technically it should be a
+0 quark, but we require NULL so compilers that support it can check for
+the NULL terminator and warn if it&apos;s not there).
+This function is just like gst_structure_get() only that it is slightly
+more efficient since it saves the string-to-quark lookup in the global
+quark hashtable.
+For refcounted (mini)objects you will acquire your own reference which
+you must release with a suitable _unref() when no longer needed. For
+strings and boxed types you will acquire a copy which you will need to
+release with either g_free() or the suiteable function for the boxed type.
+because the field requested did not exist, or was of a type other
+than the type specified), otherwise TRUE."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_field_id" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_get_value"
+              c:identifier="gst_structure_id_get_value"
+              doc="Get the value of the field with GQuark @field.
+identifier.">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="gst_structure_get_value"
+              doc="Get the value of the field with name @fieldname.">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_field"
+              c:identifier="gst_structure_remove_field"
+              doc="Removes the field with the given name.  If the field with the given
+name does not exist, the structure is unchanged.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_fields"
+              c:identifier="gst_structure_remove_fields"
+              doc="Removes the fields with the given names. If a field does not exist, the
+argument is ignored.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_all_fields"
+              c:identifier="gst_structure_remove_all_fields"
+              doc="Removes all fields in a GstStructure.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_field_type"
+              c:identifier="gst_structure_get_field_type"
+              doc="Finds the field with the given name, and returns the type of the
+value it contains.  If the field is not found, G_TYPE_INVALID is
+returned.">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gst_structure_foreach"
+              doc="Calls the provided function once for each field in the #GstStructure. The
+function must not modify the fields. Also see gst_structure_map_in_place().
+FALSE otherwise.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="StructureForeachFunc"
+                  c:type="GstStructureForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="map_in_place"
+              c:identifier="gst_structure_map_in_place"
+              doc="Calls the provided function once for each field in the #GstStructure. In
+contrast to gst_structure_foreach(), the function may modify but not delete the
+fields. The structure must be mutable.
+FALSE otherwise.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="StructureMapFunc" c:type="GstStructureMapFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="n_fields"
+              c:identifier="gst_structure_n_fields"
+              doc="Get the number of fields in the structure.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="nth_field_name"
+              c:identifier="gst_structure_nth_field_name"
+              doc="Get the name of the given field number, counting from 0 onwards.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_has_field"
+              c:identifier="gst_structure_id_has_field"
+              doc="Check if @structure contains a field named @field."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="id_has_field_typed"
+              c:identifier="gst_structure_id_has_field_typed"
+              doc="Check if @structure contains a field named @field and with GType @type."
+              version="0.10.26">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_field"
+              c:identifier="gst_structure_has_field"
+              doc="Check if @structure contains a field named @fieldname.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_field_typed"
+              c:identifier="gst_structure_has_field_typed"
+              doc="Check if @structure contains a field named @fieldname and with GType @type.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean"
+              c:identifier="gst_structure_get_boolean"
+              doc="Sets the boolean pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a boolean, this
+function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int"
+              c:identifier="gst_structure_get_int"
+              doc="Sets the int pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain an int, this function
+returns %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint"
+              c:identifier="gst_structure_get_uint"
+              doc="Sets the uint pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a uint, this function
+returns %FALSE."
+              version="0.10.15">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fourcc"
+              c:identifier="gst_structure_get_fourcc"
+              doc="Sets the Fourcc pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a fourcc, this function
+returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double"
+              c:identifier="gst_structure_get_double"
+              doc="Sets the double pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a double, this
+function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date"
+              c:identifier="gst_structure_get_date"
+              doc="Sets the date pointed to by @value corresponding to the date of the
+given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+On success @value will point to a newly-allocated copy of the date which
+inconsistent with e.g. gst_structure_get_string() which doesn&apos;t return a
+copy of the string).
+with @fieldname or the existing field did not contain a data, this function
+returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GLib.Date" c:type="GDate**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_clock_time"
+              c:identifier="gst_structure_get_clock_time"
+              doc="Sets the clock time pointed to by @value corresponding to the clock time
+of the given field.  Caller is responsible for making sure the field exists
+and has the correct type.
+with @fieldname or the existing field did not contain a #GstClockTime, this
+function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="ClockTime" c:type="GstClockTime*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string"
+              c:identifier="gst_structure_get_string"
+              doc="Finds the field corresponding to @fieldname, and returns the string
+contained in the field&apos;s value.  Caller is responsible for making
+sure the field exists and has the correct type.
+The string should not be modified, and remains valid until the next
+call to a gst_structure_*() function with the given structure.
+or did not contain a string.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_enum"
+              c:identifier="gst_structure_get_enum"
+              doc="Sets the int pointed to by @value corresponding to the value of the
+given field.  Caller is responsible for making sure the field exists,
+has the correct type and that the enumtype is correct.
+with @fieldname or the existing field did not contain an enum of the given
+type, this function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="enumtype" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fraction"
+              c:identifier="gst_structure_get_fraction"
+              doc="Sets the integers pointed to by @value_numerator and @value_denominator
+corresponding to the value of the given field.  Caller is responsible
+for making sure the field exists and has the correct type.
+with @fieldname or the existing field did not contain a GstFraction, this
+function returns FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value_numerator"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="value_denominator"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="gst_structure_to_string"
+              doc="Converts @structure to a human-readable string representation.
+For debugging purposes its easier to do something like this:
+|[
+GST_LOG (&quot;structure is %&quot; GST_PTR_FORMAT, structure);
+]|
+This prints the structure in human readble form.
+usage.">
+        <return-value transfer-ownership="full" doc="after">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="fixate_field_nearest_int"
+              c:identifier="gst_structure_fixate_field_nearest_int"
+              doc="Fixates a #GstStructure by changing the given field to the nearest
+integer to @target that is a subset of the existing field.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_nearest_double"
+              c:identifier="gst_structure_fixate_field_nearest_double"
+              doc="Fixates a #GstStructure by changing the given field to the nearest
+double to @target that is a subset of the existing field.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_boolean"
+              c:identifier="gst_structure_fixate_field_boolean"
+              doc="Fixates a #GstStructure by changing the given @field_name field to the given">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fixate_field_nearest_fraction"
+              c:identifier="gst_structure_fixate_field_nearest_fraction"
+              doc="Fixates a #GstStructure by changing the given field to the nearest
+fraction to @target_numerator/@target_denominator that is a subset
+of the existing field.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="field_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="target_numerator" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="target_denominator" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="StructureChangeType"
+                 doc="The type of a %GST_MESSAGE_STRUCTURE_CHANGE."
+                 version="0.10.22"
+                 c:type="GstStructureChangeType">
+      <member name="link"
+              value="0"
+              c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_LINK"/>
+      <member name="unlink"
+              value="1"
+              c:identifier="GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK"/>
+    </enumeration>
+    <callback name="StructureForeachFunc"
+              c:type="GstStructureForeachFunc"
+              doc="A function that will be called in gst_structure_foreach(). The function may
+not modify @value.
+the foreach operation should stop with FALSE.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="field_id" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="StructureMapFunc"
+              c:type="GstStructureMapFunc"
+              doc="A function that will be called in gst_structure_map_in_place(). The function
+may modify @value.
+the map operation should stop with FALSE.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="field_id" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="SystemClock"
+           c:type="GstSystemClock"
+           doc="The default implementation of a #GstClock that uses the system time."
+           parent="Clock"
+           glib:type-name="GstSystemClock"
+           glib:get-type="gst_system_clock_get_type"
+           glib:type-struct="SystemClockClass">
+      <function name="obtain"
+                c:identifier="gst_system_clock_obtain"
+                doc="Get a handle to the default system clock. The refcount of the
+clock will be increased so you need to unref the clock after
+usage.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Clock" c:type="GstClock*"/>
+        </return-value>
+      </function>
+      <property name="clock-type" writable="1">
+        <type name="ClockType" c:type="GstClockType"/>
+      </property>
+      <field name="clock">
+        <type name="Clock" c:type="GstClock"/>
+      </field>
+      <field name="thread">
+        <type name="GLib.Thread" c:type="GThread*"/>
+      </field>
+      <field name="stopping">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="priv">
+        <type name="SystemClockPrivate" c:type="GstSystemClockPrivate*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="SystemClockClass"
+            c:type="GstSystemClockClass"
+            glib:is-gtype-struct-for="SystemClock">
+      <field name="parent_class">
+        <type name="ClockClass" c:type="GstClockClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="SystemClockPrivate" c:type="GstSystemClockPrivate">
+    </record>
+    <constant name="TAG_ALBUM" value="album">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_ARTIST" value="album-artist">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_ARTIST_SORTNAME" value="album-artist-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_GAIN" value="replaygain-album-gain">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_PEAK" value="replaygain-album-peak">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_SORTNAME" value="album-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_VOLUME_COUNT" value="album-disc-count">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ALBUM_VOLUME_NUMBER" value="album-disc-number">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ARTIST" value="artist">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ARTIST_SORTNAME" value="musicbrainz-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ATTACHMENT" value="attachment">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_AUDIO_CODEC" value="audio-codec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_BEATS_PER_MINUTE" value="beats-per-minute">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_BITRATE" value="bitrate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_CODEC" value="codec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COMMENT" value="comment">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COMPOSER" value="composer">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COMPOSER_SORTNAME" value="composer-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_CONTACT" value="contact">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_CONTAINER_FORMAT" value="container-format">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COPYRIGHT" value="copyright">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_COPYRIGHT_URI" value="copyright-uri">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_DATE" value="date">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_DESCRIPTION" value="description">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_DURATION" value="duration">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ENCODER" value="encoder">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ENCODER_VERSION" value="encoder-version">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_EXTENDED_COMMENT" value="extended-comment">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GENRE" value="genre">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_CITY" value="geo-location-city">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_COUNTRY" value="geo-location-country">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_ELEVATION" value="geo-location-elevation">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_LATITUDE" value="geo-location-latitude">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_LONGITUDE" value="geo-location-longitude">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_NAME" value="geo-location-name">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GEO_LOCATION_SUBLOCATION"
+              value="geo-location-sublocation">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_GROUPING" value="grouping">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_HOMEPAGE" value="homepage">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_IMAGE" value="image">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ISRC" value="isrc">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_KEYWORDS" value="keywords">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LANGUAGE_CODE" value="language-code">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LICENSE" value="license">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LICENSE_URI" value="license-uri">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LOCATION" value="location">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_LYRICS" value="lyrics">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_MAXIMUM_BITRATE" value="maximum-bitrate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_MINIMUM_BITRATE" value="minimum-bitrate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_NOMINAL_BITRATE" value="nominal-bitrate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_ORGANIZATION" value="organization">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_PERFORMER" value="performer">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_PREVIEW_IMAGE" value="preview-image">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_REFERENCE_LEVEL" value="replaygain-reference-level">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SERIAL" value="serial">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SHOW_EPISODE_NUMBER" value="show-episode-number">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SHOW_NAME" value="show-name">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SHOW_SEASON_NUMBER" value="show-season-number">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SHOW_SORTNAME" value="show-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_SUBTITLE_CODEC" value="subtitle-codec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TITLE" value="title">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TITLE_SORTNAME" value="title-sortname">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TRACK_COUNT" value="track-count">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TRACK_GAIN" value="replaygain-track-gain">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TRACK_NUMBER" value="track-number">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_TRACK_PEAK" value="replaygain-track-peak">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_USER_RATING" value="user-rating">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_VERSION" value="version">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TAG_VIDEO_CODEC" value="video-codec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="TIME_FORMAT" value="u:%02u:%02u.%09u">
+      <type name="utf8"/>
+    </constant>
+    <enumeration name="TagFlag"
+                 doc="Extra tag flags used when registering tags."
+                 c:type="GstTagFlag">
+      <member name="undefined"
+              value="0"
+              c:identifier="GST_TAG_FLAG_UNDEFINED"/>
+      <member name="meta" value="1" c:identifier="GST_TAG_FLAG_META"/>
+      <member name="encoded" value="2" c:identifier="GST_TAG_FLAG_ENCODED"/>
+      <member name="decoded" value="3" c:identifier="GST_TAG_FLAG_DECODED"/>
+      <member name="count" value="4" c:identifier="GST_TAG_FLAG_COUNT"/>
+    </enumeration>
+    <callback name="TagForeachFunc"
+              c:type="GstTagForeachFunc"
+              doc="A function that will be called in gst_tag_list_foreach(). The function may
+not modify the tag list.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TagList"
+            c:type="GstTagList"
+            doc="Opaque #GstTagList data structure."
+            glib:type-name="GstTagList"
+            glib:get-type="gst_tag_list_get_type">
+      <constructor name="new"
+                   c:identifier="gst_tag_list_new"
+                   doc="Creates a new empty GstTagList.">
+        <return-value transfer-ownership="full">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_full"
+                   c:identifier="gst_tag_list_new_full"
+                   doc="Creates a new taglist and appends the values for the given tags. It expects
+tag-value pairs like gst_tag_list_add(), and a NULL terminator after the
+last pair. The type of the values is implicit and is documented in the API
+reference, but can also be queried at runtime with gst_tag_get_type(). It
+is an error to pass a value of a type not matching the tag type into this
+function. The tag list will make copies of any arguments passed
+(e.g. strings, buffers).
+needed."
+                   version="0.10.24">
+        <return-value transfer-ownership="full" doc="when no longer">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gst_tag_list_copy"
+              doc="Copies a given #GstTagList.">
+        <return-value transfer-ownership="full">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+      </method>
+      <method name="is_empty"
+              c:identifier="gst_tag_list_is_empty"
+              doc="Checks if the given taglist is empty."
+              version="0.10.11">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="insert"
+              c:identifier="gst_tag_list_insert"
+              doc="Inserts the tags of the @from list into the first list using the given mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="from" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge"
+              c:identifier="gst_tag_list_merge"
+              doc="Merges the two given lists into a new list. If one of the lists is NULL, a
+copy of the other is returned. If both lists are NULL, NULL is returned.">
+        <return-value transfer-ownership="full">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="list2" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="gst_tag_list_free"
+              doc="Frees the given list and all associated values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_tag_size"
+              c:identifier="gst_tag_list_get_tag_size"
+              doc="Checks how many value are stored in this tag list for the given tag.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add"
+              c:identifier="gst_tag_list_add"
+              doc="Sets the values for the given tags using the specified mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_values"
+              c:identifier="gst_tag_list_add_values"
+              doc="Sets the GValues for the given tags using the specified mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_value"
+              c:identifier="gst_tag_list_add_value"
+              doc="Sets the GValue for a given tag using the specified mode."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_tag"
+              c:identifier="gst_tag_list_remove_tag"
+              doc="Removes the given tag from the taglist.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gst_tag_list_foreach"
+              doc="Calls the given function for each tag inside the tag list. Note that if there
+is no tag, the function won&apos;t be called at all.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="TagForeachFunc" c:type="GstTagForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_index"
+              c:identifier="gst_tag_list_get_value_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+available or the tag doesn&apos;t have as many entries">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_char"
+              c:identifier="gst_tag_list_get_char"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_char_index"
+              c:identifier="gst_tag_list_get_char_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uchar"
+              c:identifier="gst_tag_list_get_uchar"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uchar_index"
+              c:identifier="gst_tag_list_get_uchar_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean"
+              c:identifier="gst_tag_list_get_boolean"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean_index"
+              c:identifier="gst_tag_list_get_boolean_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int"
+              c:identifier="gst_tag_list_get_int"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int_index"
+              c:identifier="gst_tag_list_get_int_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint"
+              c:identifier="gst_tag_list_get_uint"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint_index"
+              c:identifier="gst_tag_list_get_uint_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_long"
+              c:identifier="gst_tag_list_get_long"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="long" c:type="glong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_long_index"
+              c:identifier="gst_tag_list_get_long_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="long" c:type="glong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ulong"
+              c:identifier="gst_tag_list_get_ulong"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="ulong" c:type="gulong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ulong_index"
+              c:identifier="gst_tag_list_get_ulong_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="ulong" c:type="gulong*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64"
+              c:identifier="gst_tag_list_get_int64"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64_index"
+              c:identifier="gst_tag_list_get_int64_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int64" c:type="gint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64"
+              c:identifier="gst_tag_list_get_uint64"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64_index"
+              c:identifier="gst_tag_list_get_uint64_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="uint64" c:type="guint64*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float"
+              c:identifier="gst_tag_list_get_float"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float_index"
+              c:identifier="gst_tag_list_get_float_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double"
+              c:identifier="gst_tag_list_get_double"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_index"
+              c:identifier="gst_tag_list_get_double_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string"
+              c:identifier="gst_tag_list_get_string"
+              doc="Copies the contents for the given tag into the value, possibly merging
+multiple values into one if multiple values are associated with the tag.
+Use gst_tag_list_get_string_index (list, tag, 0, value) if you want
+to retrieve the first string associated with this tag unmodified.
+The resulting string in @value will be in UTF-8 encoding and should be
+freed by the caller using g_free when no longer needed. Since 0.10.24 the
+returned string is also guaranteed to be non-NULL and non-empty.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_index"
+              c:identifier="gst_tag_list_get_string_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+The resulting string in @value will be in UTF-8 encoding and should be
+freed by the caller using g_free when no longer needed. Since 0.10.24 the
+returned string is also guaranteed to be non-NULL and non-empty.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pointer"
+              c:identifier="gst_tag_list_get_pointer"
+              doc="Copies the contents for the given tag into the value, merging multiple values
+into one if multiple values are associated with the tag.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pointer_index"
+              c:identifier="gst_tag_list_get_pointer_index"
+              doc="Gets the value that is at the given index for the given tag in the given
+list.
+given list.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date"
+              c:identifier="gst_tag_list_get_date"
+              doc="Copies the first date for the given tag in the taglist into the variable
+pointed to by @value. Free the date with g_date_free() when it is no longer
+needed.
+given list or if it was #NULL.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GLib.Date" c:type="GDate**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date_index"
+              c:identifier="gst_tag_list_get_date_index"
+              doc="Gets the date that is at the given index for the given tag in the given
+list and copies it into the variable pointed to by @value. Free the date
+with g_date_free() when it is no longer needed.
+given list or if it was #NULL.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GLib.Date" c:type="GDate**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_buffer"
+              c:identifier="gst_tag_list_get_buffer"
+              doc="Copies the first buffer for the given tag in the taglist into the variable
+pointed to by @value. Free the buffer with gst_buffer_unref() when it is
+no longer needed.
+given list or if it was #NULL."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_buffer_index"
+              c:identifier="gst_tag_list_get_buffer_index"
+              doc="Gets the buffer that is at the given index for the given tag in the given
+list and copies it into the variable pointed to by @value. Free the buffer
+with gst_buffer_unref() when it is no longer needed.
+given list or if it was #NULL."
+              version="0.10.23">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Buffer" c:type="GstBuffer**"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="TagMergeFunc"
+              c:type="GstTagMergeFunc"
+              doc="A function for merging multiple values of a tag used when registering
+tags.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="TagMergeMode"
+                 doc="The different tag merging modes are basically replace, overwrite and append,
+already in the element and (B) the ones that are supplied to the element (
+e.g. via gst_tag_setter_merge_tags() / gst_tag_setter_add_tags() or a
+%GST_EVENT_TAG), how are these tags merged?
+In the table below this is shown for the cases that a tag exists in the list
+(A) or does not exists (!A) and combinations thereof.
+&lt;table frame=&quot;all&quot; colsep=&quot;1&quot; rowsep=&quot;1&quot;&gt;
+&lt;title&gt;merge mode&lt;/title&gt;
+&lt;tgroup cols=&apos;5&apos; align=&apos;left&apos;&gt;
+&lt;thead&gt;
+&lt;row&gt;
+&lt;entry&gt;merge mode&lt;/entry&gt;
+&lt;entry&gt;A + B&lt;/entry&gt;
+&lt;entry&gt;A + !B&lt;/entry&gt;
+&lt;entry&gt;!A + B&lt;/entry&gt;
+&lt;entry&gt;!A + !B&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/thead&gt;
+&lt;tbody&gt;
+&lt;row&gt;
+&lt;entry&gt;REPLACE_ALL&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;REPLACE&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;APPEND&lt;/entry&gt;
+&lt;entry&gt;A, B&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;PREPEND&lt;/entry&gt;
+&lt;entry&gt;B, A&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;KEEP&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;B&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;row&gt;
+&lt;entry&gt;KEEP_ALL&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;A&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;entry&gt;-&lt;/entry&gt;
+&lt;/row&gt;
+&lt;/tbody&gt;
+&lt;/tgroup&gt;
+&lt;/table&gt;"
+                 c:type="GstTagMergeMode">
+      <member name="undefined"
+              value="0"
+              c:identifier="GST_TAG_MERGE_UNDEFINED"/>
+      <member name="replace_all"
+              value="1"
+              c:identifier="GST_TAG_MERGE_REPLACE_ALL"/>
+      <member name="replace" value="2" c:identifier="GST_TAG_MERGE_REPLACE"/>
+      <member name="append" value="3" c:identifier="GST_TAG_MERGE_APPEND"/>
+      <member name="prepend" value="4" c:identifier="GST_TAG_MERGE_PREPEND"/>
+      <member name="keep" value="5" c:identifier="GST_TAG_MERGE_KEEP"/>
+      <member name="keep_all" value="6" c:identifier="GST_TAG_MERGE_KEEP_ALL"/>
+      <member name="count" value="7" c:identifier="GST_TAG_MERGE_COUNT"/>
+    </enumeration>
+    <interface name="TagSetter"
+               c:type="GstTagSetter"
+               doc="Opaque #GstTagSetter data structure."
+               glib:type-name="GstTagSetter"
+               glib:get-type="gst_tag_setter_get_type">
+      <prerequisite name="Element"/>
+      <method name="reset_tags"
+              c:identifier="gst_tag_setter_reset_tags"
+              doc="Reset the internal taglist. Elements should call this from within the
+state-change handler."
+              version="0.10.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="merge_tags"
+              c:identifier="gst_tag_setter_merge_tags"
+              doc="Merges the given list into the setter&apos;s list using the given mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="list" transfer-ownership="none">
+            <type name="TagList" c:type="GstTagList*"/>
+          </parameter>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tags"
+              c:identifier="gst_tag_setter_add_tags"
+              doc="Adds the given tag / value pairs on the setter using the given merge mode.
+The list must be terminated with NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tag_values"
+              c:identifier="gst_tag_setter_add_tag_values"
+              doc="Adds the given tag / GValue pairs on the setter using the given merge mode.
+The list must be terminated with NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_tag_value"
+              c:identifier="gst_tag_setter_add_tag_value"
+              doc="Adds the given tag / GValue pair on the setter using the given merge mode."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tag_list"
+              c:identifier="gst_tag_setter_get_tag_list"
+              doc="Returns the current list of tags the setter uses.  The list should not be
+modified or freed.
+or NULL if none is used.">
+        <return-value transfer-ownership="none">
+          <type name="TagList" c:type="GstTagList*"/>
+        </return-value>
+      </method>
+      <method name="set_tag_merge_mode"
+              c:identifier="gst_tag_setter_set_tag_merge_mode"
+              doc="Sets the given merge mode that is used for adding tags from events to tags
+specified by this interface. The default is #GST_TAG_MERGE_KEEP, which keeps
+the tags set with this interface and discards tags from events.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tag_merge_mode"
+              c:identifier="gst_tag_setter_get_tag_merge_mode"
+              doc="Queries the mode by which tags inside the setter are overwritten by tags
+from events">
+        <return-value transfer-ownership="full">
+          <type name="TagMergeMode" c:type="GstTagMergeMode"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="TagSetterIFace"
+            c:type="GstTagSetterIFace"
+            doc="#GstTagSetterIFace interface.">
+      <field name="g_iface" writable="1">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+    </record>
+    <class name="Task"
+           c:type="GstTask"
+           doc="The #GstTask object."
+           parent="Object"
+           glib:type-name="GstTask"
+           glib:get-type="gst_task_get_type"
+           glib:type-struct="TaskClass">
+      <function name="cleanup_all"
+                c:identifier="gst_task_cleanup_all"
+                doc="Wait for all tasks to be stopped. This is mainly used internally
+to ensure proper cleanup of internal data structures in test suites.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <function name="create"
+                c:identifier="gst_task_create"
+                doc="Create a new Task that will repeatedly call the provided @func
+with @data as a parameter. Typically the task will run in
+a new thread.
+The function cannot be changed after the task has been created. You
+must create a new #GstTask to change the function.
+This function will not yet create and start a thread. Use gst_task_start() or
+gst_task_pause() to create and start the GThread.
+Before the task can be used, a #GStaticRecMutex must be configured using the
+gst_task_set_lock() function. This lock will always be acquired while
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="Task" c:type="GstTask*"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="1">
+            <type name="TaskFunction" c:type="GstTaskFunction"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="set_lock"
+              c:identifier="gst_task_set_lock"
+              doc="Set the mutex used by the task. The mutex will be acquired before
+calling the #GstTaskFunction.
+This function has to be called before calling gst_task_pause() or
+gst_task_start().
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mutex" transfer-ownership="none">
+            <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_priority"
+              c:identifier="gst_task_set_priority"
+              doc="Changes the priority of @task to @priority.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="priority" transfer-ownership="none">
+            <type name="GLib.ThreadPriority" c:type="GThreadPriority"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pool"
+              c:identifier="gst_task_get_pool"
+              doc="Get the #GstTaskPool that this task will use for its streaming
+threads.
+MT safe.
+after usage."
+              version="0.10.24">
+        <return-value transfer-ownership="full">
+          <type name="TaskPool" c:type="GstTaskPool*"/>
+        </return-value>
+      </method>
+      <method name="set_pool"
+              c:identifier="gst_task_set_pool"
+              doc="Set @pool as the new GstTaskPool for @task. Any new streaming threads that
+will be created by @task will now use @pool.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pool" transfer-ownership="none">
+            <type name="TaskPool" c:type="GstTaskPool*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_thread_callbacks"
+              c:identifier="gst_task_set_thread_callbacks"
+              doc="Set callbacks which will be executed when a new thread is needed, the thread
+function is entered and left and when the thread is joined.
+By default a thread for @task will be created from a default thread pool.
+Objects can use custom GThreads or can perform additional configuration of
+the threads (such as changing the thread priority) by installing callbacks.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callbacks" transfer-ownership="none">
+            <type name="TaskThreadCallbacks" c:type="GstTaskThreadCallbacks*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state"
+              c:identifier="gst_task_get_state"
+              doc="Get the current state of the task.
+MT safe.">
+        <return-value transfer-ownership="full">
+          <type name="TaskState" c:type="GstTaskState"/>
+        </return-value>
+      </method>
+      <method name="set_state"
+              c:identifier="gst_task_set_state"
+              doc="Sets the state of @task to @state.
+The @task must have a lock associated with it using
+gst_task_set_lock() when going to GST_TASK_STARTED or GST_TASK_PAUSED or
+this function will return %FALSE.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="TaskState" c:type="GstTaskState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start"
+              c:identifier="gst_task_start"
+              doc="Starts @task. The @task must have a lock associated with it using
+gst_task_set_lock() or this function will return %FALSE.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="stop"
+              c:identifier="gst_task_stop"
+              doc="Stops @task. This method merely schedules the task to stop and
+will not wait for the task to have completely stopped. Use
+gst_task_join() to stop and wait for completion.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="pause"
+              c:identifier="gst_task_pause"
+              doc="Pauses @task. This method can also be called on a task in the
+stopped state, in which case a thread will be started and will remain
+in the paused state. This function does not wait for the task to complete
+the paused state.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="join"
+              c:identifier="gst_task_join"
+              doc="Joins @task. After this call, it is safe to unref the task
+and clean up the lock set with gst_task_set_lock().
+The task will automatically be stopped with this call.
+This function cannot be called from within a task function as this
+would cause a deadlock. The function will detect this and print a
+g_warning.
+MT safe.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="state">
+        <type name="TaskState" c:type="GstTaskState"/>
+      </field>
+      <field name="cond">
+        <type name="GLib.Cond" c:type="GCond*"/>
+      </field>
+      <field name="lock">
+        <type name="GLib.StaticRecMutex" c:type="GStaticRecMutex*"/>
+      </field>
+      <field name="func">
+        <type name="TaskFunction" c:type="GstTaskFunction"/>
+      </field>
+      <field name="data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="running">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <union name="abidata" c:type="abidata">
+        <record name="ABI" c:type="ABI">
+          <field name="thread" writable="1">
+            <type name="GLib.Thread" c:type="GThread*"/>
+          </field>
+        </record>
+        <field name="_gst_reserved" writable="1">
+          <array zero-terminated="0" c:type="gpointer" fixed-size="3">
+            <type name="any"/>
+          </array>
+        </field>
+      </union>
+      <field name="priv">
+        <type name="TaskPrivate" c:type="GstTaskPrivate*"/>
+      </field>
+    </class>
+    <record name="TaskClass"
+            c:type="GstTaskClass"
+            glib:is-gtype-struct-for="Task">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="pool">
+        <type name="TaskPool" c:type="GstTaskPool*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TaskFunction"
+              c:type="GstTaskFunction"
+              doc="A function that will repeatedly be called in the thread created by
+a #GstTask.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="TaskPool"
+           c:type="GstTaskPool"
+           doc="The #GstTaskPool object."
+           parent="Object"
+           glib:type-name="GstTaskPool"
+           glib:get-type="gst_task_pool_get_type"
+           glib:type-struct="TaskPoolClass">
+      <constructor name="new"
+                   c:identifier="gst_task_pool_new"
+                   doc="Create a new default task pool. The default task pool will use a regular
+GThreadPool for threads."
+                   version="0.10.24">
+        <return-value transfer-ownership="full" doc="after usage.">
+          <type name="TaskPool" c:type="GstTaskPool*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="prepare" invoker="prepare" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="cleanup" invoker="cleanup">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="push" invoker="push" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none">
+            <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="2">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="join" invoker="join">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="prepare"
+              c:identifier="gst_task_pool_prepare"
+              doc="Prepare the taskpool for accepting gst_task_pool_push() operations.
+MT safe."
+              version="0.10.24"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push"
+              c:identifier="gst_task_pool_push"
+              doc="Start the execution of a new thread from @pool.
+function. This pointer can be NULL, you must check @error to detect
+errors."
+              version="0.10.24"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="join"
+              c:identifier="gst_task_pool_join"
+              doc="Join a task and/or return it to the pool. @id is the id obtained from
+gst_task_pool_push()."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="id" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cleanup"
+              c:identifier="gst_task_pool_cleanup"
+              doc="Wait for all tasks to be stopped. This is mainly used internally
+to ensure proper cleanup of internal data structures in test suites.
+MT safe."
+              version="0.10.24">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="pool">
+        <type name="GLib.ThreadPool" c:type="GThreadPool*"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="TaskPoolClass"
+            c:type="GstTaskPoolClass"
+            glib:is-gtype-struct-for="TaskPool"
+            doc="The #GstTaskPoolClass object.">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="prepare">
+        <callback name="prepare" c:type="prepare" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cleanup">
+        <callback name="cleanup" c:type="cleanup">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="push">
+        <callback name="push" c:type="push" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none">
+              <type name="TaskPoolFunction" c:type="GstTaskPoolFunction"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="2">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="join">
+        <callback name="join" c:type="join">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="pool" transfer-ownership="none">
+              <type name="TaskPool" c:type="GstTaskPool*"/>
+            </parameter>
+            <parameter name="id" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TaskPoolFunction"
+              c:type="GstTaskPoolFunction"
+              doc="Task function, see gst_task_pool_push()."
+              version="0.10.24">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TaskPrivate" c:type="GstTaskPrivate">
+    </record>
+    <enumeration name="TaskState"
+                 doc="The different states a task can be in"
+                 c:type="GstTaskState">
+      <member name="started" value="0" c:identifier="GST_TASK_STARTED"/>
+      <member name="stopped" value="1" c:identifier="GST_TASK_STOPPED"/>
+      <member name="paused" value="2" c:identifier="GST_TASK_PAUSED"/>
+    </enumeration>
+    <record name="TaskThreadCallbacks"
+            c:type="GstTaskThreadCallbacks"
+            doc="thread enters its function.
+to leave its function
+Custom GstTask thread callback functions that can be installed."
+            version="0.10.24">
+      <field name="enter_thread">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="leave_thread">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="Trace" c:type="GstTrace" doc="Opaque #GstTrace structure.">
+      <field name="filename" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="fd" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="buf" writable="1">
+        <type name="TraceEntry" c:type="GstTraceEntry*"/>
+      </field>
+      <field name="bufsize" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="bufoffset" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gst_trace_new"
+                   doc="Create a ringbuffer of @size in the file with @filename to
+store trace results in.">
+        <return-value transfer-ownership="full">
+          <type name="Trace" c:type="GstTrace*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="destroy"
+              c:identifier="gst_trace_destroy"
+              doc="Flush an close the previously allocated @trace.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="flush"
+              c:identifier="gst_trace_flush"
+              doc="Flush any pending trace entries in @trace to the trace file.
+flushed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="text_flush"
+              c:identifier="gst_trace_text_flush"
+              doc="Flush any pending trace entries in @trace to the trace file,
+formatted as a text line with timestamp and sequence numbers.
+flushed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_default"
+              c:identifier="gst_trace_set_default"
+              doc="Set the default #GstTrace to @trace.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="TraceEntry" c:type="GstTraceEntry">
+      <field name="timestamp" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="sequence" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="message" writable="1">
+        <array zero-terminated="0" c:type="gchar" fixed-size="112">
+          <type name="int8"/>
+        </array>
+      </field>
+    </record>
+    <record name="TypeFind"
+            c:type="GstTypeFind"
+            doc="Object that stores typefind callbacks. To use with #GstTypeFindFactory.">
+      <field name="peek">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="suggest">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="get_length">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="peek"
+              c:identifier="gst_type_find_peek"
+              doc="Returns the @size bytes of the stream to identify beginning at offset. If
+offset is a positive number, the offset is relative to the beginning of the
+stream, if offset is a negative number the offset is relative to the end of
+the stream. The returned memory is valid until the typefinding function
+returns and must not be freed.">
+        <return-value transfer-ownership="full">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest"
+              c:identifier="gst_type_find_suggest"
+              doc="If a #GstTypeFindFunction calls this function it suggests the caps with the
+given probability. A #GstTypeFindFunction may supply different suggestions
+in one call.
+It is up to the caller of the #GstTypeFindFunction to interpret these values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="probability" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="caps" transfer-ownership="none">
+            <type name="Caps" c:type="GstCaps*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="suggest_simple"
+              c:identifier="gst_type_find_suggest_simple"
+              doc="arguments passed to gst_structure_new() (ie. triplets of field name,
+field GType and field value)
+If a #GstTypeFindFunction calls this function it suggests the caps with the
+given probability. A #GstTypeFindFunction may supply different suggestions
+in one call. It is up to the caller of the #GstTypeFindFunction to interpret
+these values.
+This function is similar to gst_type_find_suggest(), only that instead of
+passing a #GstCaps argument you can create the caps on the fly in the same
+way as you can with gst_caps_new_simple().
+Make sure you terminate the list of arguments with a NULL argument and that
+the values passed have the correct type (in terms of width in bytes when
+passed to the vararg function - this applies particularly to gdouble and
+guint64 arguments)."
+              version="0.10.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="probability" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="media_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="fieldname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length"
+              c:identifier="gst_type_find_get_length"
+              doc="Get the length of the data stream.">
+        <return-value transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="TypeFindFactory"
+           c:type="GstTypeFindFactory"
+           doc="Object that stores information about a typefind function."
+           parent="PluginFeature"
+           glib:type-name="GstTypeFindFactory"
+           glib:get-type="gst_type_find_factory_get_type"
+           glib:type-struct="TypeFindFactoryClass">
+      <function name="get_list"
+                c:identifier="gst_type_find_factory_get_list"
+                doc="Gets the list of all registered typefind factories. You must free the
+list using gst_plugin_feature_list_free.
+The returned factories are sorted by highest rank first, and then by
+factory name. (behaviour change since 0.10.26)">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </function>
+      <method name="get_extensions"
+              c:identifier="gst_type_find_factory_get_extensions"
+              doc="Gets the extensions associated with a #GstTypeFindFactory. The returned
+array should not be changed. If you need to change stuff in it, you should
+copy it using g_strdupv().  This function may return NULL to indicate
+a 0-length list.">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_caps"
+              c:identifier="gst_type_find_factory_get_caps"
+              doc="Gets the #GstCaps associated with a typefind factory.">
+        <return-value transfer-ownership="full">
+          <type name="Caps" c:type="GstCaps*"/>
+        </return-value>
+      </method>
+      <method name="call_function"
+              c:identifier="gst_type_find_factory_call_function"
+              doc="members must be set.
+Calls the #GstTypeFindFunction associated with this factory.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="find" transfer-ownership="none">
+            <type name="TypeFind" c:type="GstTypeFind*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="feature">
+        <type name="PluginFeature" c:type="GstPluginFeature"/>
+      </field>
+      <field name="function">
+        <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
+      </field>
+      <field name="extensions">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="caps">
+        <type name="Caps" c:type="GstCaps*"/>
+      </field>
+      <field name="user_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="user_data_notify">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </class>
+    <record name="TypeFindFactoryClass"
+            c:type="GstTypeFindFactoryClass"
+            glib:is-gtype-struct-for="TypeFindFactory">
+      <field name="parent">
+        <type name="PluginFeatureClass" c:type="GstPluginFeatureClass"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="TypeFindFunction"
+              c:type="GstTypeFindFunction"
+              doc="A function that will be called by typefinding.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="find" transfer-ownership="none">
+          <type name="TypeFind" c:type="GstTypeFind*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="TypeFindProbability"
+                 doc="The probability of the typefind function. Higher values have more certainty
+in doing a reliable typefind."
+                 c:type="GstTypeFindProbability">
+      <member name="minimum" value="1" c:identifier="GST_TYPE_FIND_MINIMUM"/>
+      <member name="possible"
+              value="50"
+              c:identifier="GST_TYPE_FIND_POSSIBLE"/>
+      <member name="likely" value="80" c:identifier="GST_TYPE_FIND_LIKELY"/>
+      <member name="nearly_certain"
+              value="99"
+              c:identifier="GST_TYPE_FIND_NEARLY_CERTAIN"/>
+      <member name="maximum" value="100" c:identifier="GST_TYPE_FIND_MAXIMUM"/>
+    </enumeration>
+    <record name="TypeNameData"
+            c:type="GstTypeNameData"
+            doc="Structure used for filtering based on @name and @type.">
+      <field name="name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+    </record>
+    <interface name="URIHandler"
+               c:type="GstURIHandler"
+               doc="Opaque #GstURIHandler structure."
+               glib:type-name="GstURIHandler"
+               glib:get-type="gst_uri_handler_get_type"
+               glib:type-struct="URIHandlerInterface">
+      <virtual-method name="get_uri" invoker="get_uri">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_uri" invoker="set_uri">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_uri_type"
+              c:identifier="gst_uri_handler_get_uri_type"
+              doc="Gets the type of the given URI handler
+Returns #GST_URI_UNKNOWN if the @handler isn&apos;t implemented correctly.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_protocols"
+              c:identifier="gst_uri_handler_get_protocols"
+              doc="Gets the list of protocols supported by @handler. This list may not be
+modified.
+Returns NULL if the @handler isn&apos;t implemented properly, or the @handler
+doesn&apos;t support any protocols.">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_uri"
+              c:identifier="gst_uri_handler_get_uri"
+              doc="Gets the currently handled URI.
+Returns NULL if there are no URI currently handled. The returned
+string must not be modified or freed.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_uri"
+              c:identifier="gst_uri_handler_set_uri"
+              doc="Tries to set the URI of the given handler.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_uri"
+              c:identifier="gst_uri_handler_new_uri"
+              doc="Emits the new-uri signal for a given handler, when that handler has a new URI.
+This function should only be called by URI handlers themselves.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="new-uri"
+                   doc="The URI of the given @handler has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="URIHandlerInterface"
+            c:type="GstURIHandlerInterface"
+            glib:is-gtype-struct-for="URIHandler"
+            doc="This is for use by bindings that need to pass context when creating a URI
+Handler. If implemented, get_protocols will be used in preference to
+Any #GstElement using this interface should implement these methods.">
+      <field name="parent">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="new_uri">
+        <callback name="new_uri" c:type="new_uri">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="URIHandler" c:type="GstURIHandler*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_type">
+        <callback name="get_type" c:type="get_type">
+          <return-value transfer-ownership="full">
+            <type name="URIType" c:type="GstURIType"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_protocols">
+        <callback name="get_protocols" c:type="get_protocols">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_uri">
+        <callback name="get_uri" c:type="get_uri">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="URIHandler" c:type="GstURIHandler*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_uri">
+        <callback name="set_uri" c:type="set_uri">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="handler" transfer-ownership="none">
+              <type name="URIHandler" c:type="GstURIHandler*"/>
+            </parameter>
+            <parameter name="uri" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_type_full">
+        <callback name="get_type_full" c:type="get_type_full">
+          <return-value transfer-ownership="full">
+            <type name="URIType" c:type="GstURIType"/>
+          </return-value>
+          <parameters>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_protocols_full">
+        <callback name="get_protocols_full" c:type="get_protocols_full">
+          <return-value transfer-ownership="full">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </return-value>
+          <parameters>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GType" c:type="GType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <enumeration name="URIType"
+                 doc="The different types of URI direction."
+                 c:type="GstURIType">
+      <member name="unknown" value="0" c:identifier="GST_URI_UNKNOWN"/>
+      <member name="sink" value="1" c:identifier="GST_URI_SINK"/>
+      <member name="src" value="2" c:identifier="GST_URI_SRC"/>
+    </enumeration>
+    <constant name="USECOND" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_EQUAL" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_GREATER_THAN" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_LESS_THAN" value="-1">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_UNORDERED" value="2">
+      <type name="int"/>
+    </constant>
+    <callback name="ValueCompareFunc"
+              c:type="GstValueCompareFunc"
+              doc="Used together with gst_value_compare() to compare #GValue items.
+or GST_VALUE_UNORDERED">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueDeserializeFunc"
+              c:type="GstValueDeserializeFunc"
+              doc="Used by gst_value_deserialize() to parse a non-binary form into the #GValue.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueIntersectFunc"
+              c:type="GstValueIntersectFunc"
+              doc="Used by gst_value_intersect() to perform intersection for a specific #GValue
+type. If the intersection is non-empty, the result is
+placed in @dest and TRUE is returned.  If the intersection is
+empty, @dest is unmodified and FALSE is returned.
+Register a new implementation with gst_value_register_intersect_func().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueSerializeFunc"
+              c:type="GstValueSerializeFunc"
+              doc="Used by gst_value_serialize() to obtain a non-binary form of the #GValue.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ValueSubtractFunc"
+              c:type="GstValueSubtractFunc"
+              doc="Used by gst_value_subtract() to perform subtraction for a specific #GValue
+type. Register a new implementation with gst_value_register_subtract_func().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="minuend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ValueTable"
+            c:type="GstValueTable"
+            doc="VTable for the #GValue @type.">
+      <field name="type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="compare" writable="1">
+        <type name="ValueCompareFunc" c:type="GstValueCompareFunc"/>
+      </field>
+      <field name="serialize" writable="1">
+        <type name="ValueSerializeFunc" c:type="GstValueSerializeFunc"/>
+      </field>
+      <field name="deserialize" writable="1">
+        <type name="ValueDeserializeFunc" c:type="GstValueDeserializeFunc"/>
+      </field>
+      <field name="_gst_reserved" writable="1">
+        <array zero-terminated="0" c:type="void*" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="ValueUnionFunc"
+              c:type="GstValueUnionFunc"
+              doc="Used by gst_value_union() to perform unification for a specific #GValue
+type. Register a new implementation with gst_value_register_union_func().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="XML"
+           c:type="GstXML"
+           doc="XML parser object"
+           parent="Object"
+           glib:type-name="GstXML"
+           glib:get-type="gst_xml_get_type"
+           glib:type-struct="XMLClass">
+      <constructor name="new"
+                   c:identifier="gst_xml_new"
+                   doc="Create a new GstXML parser object.">
+        <return-value transfer-ownership="full">
+          <type name="XML" c:type="GstXML*"/>
+        </return-value>
+      </constructor>
+      <function name="write"
+                c:identifier="gst_xml_write"
+                doc="Converts the given element into an XML presentation.">
+        <return-value transfer-ownership="full">
+          <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
+        </return-value>
+        <parameters>
+          <parameter name="element" transfer-ownership="none">
+            <type name="Element" c:type="GstElement*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="make_element"
+                c:identifier="gst_xml_make_element"
+                doc="Load the element from the XML description">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cur" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="object_saved">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Object" c:type="GstObject*"/>
+          </parameter>
+          <parameter name="self" transfer-ownership="none">
+            <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="parse_doc"
+              c:identifier="gst_xml_parse_doc"
+              doc="Fills the GstXML object with the elements from the
+xmlDocPtr.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="doc" transfer-ownership="none">
+            <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
+          </parameter>
+          <parameter name="root" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_file"
+              c:identifier="gst_xml_parse_file"
+              doc="Fills the GstXML object with the corresponding elements from
+the XML file fname. Optionally it will only build the element from
+the element node root (if it is not NULL). This feature is useful
+if you only want to build a specific element from an XML file
+but not the pipeline it is embedded in.
+Pass &quot;-&quot; as fname to read from stdin. You can also pass a URI
+of any format that libxml supports, including http.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fname" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="root" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_memory"
+              c:identifier="gst_xml_parse_memory"
+              doc="Fills the GstXML object with the corresponding elements from
+an in memory XML buffer.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="root" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_element"
+              c:identifier="gst_xml_get_element"
+              doc="This function is used to get a pointer to the GstElement corresponding
+to name in the pipeline description. You would use this if you have
+to do anything to the element after loading.">
+        <return-value transfer-ownership="full">
+          <type name="Element" c:type="GstElement*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_topelements"
+              c:identifier="gst_xml_get_topelements"
+              doc="Retrieve a list of toplevel elements.
+of the list and must not free or modify the list. The caller also does not
+own a reference to any of the elements in the list and should obtain its own
+reference using gst_object_ref() if necessary.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GstObject"/>
+      </field>
+      <field name="topelements">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="ns">
+        <type name="libxml2.NsPtr" c:type="xmlNsPtr"/>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+      <glib:signal name="object-loaded"
+                   doc="Signals that a new object has been deserialized.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Object" c:type="GstObject"/>
+          </parameter>
+          <parameter name="xml_node" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="XMLClass"
+            c:type="GstXMLClass"
+            glib:is-gtype-struct-for="XML">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GstObjectClass"/>
+      </field>
+      <field name="object_loaded">
+        <callback name="object_loaded" c:type="object_loaded">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="xml" transfer-ownership="none">
+              <type name="XML" c:type="GstXML*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="self" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="object_saved">
+        <callback name="object_saved" c:type="object_saved">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="xml" transfer-ownership="none">
+              <type name="XML" c:type="GstXML*"/>
+            </parameter>
+            <parameter name="object" transfer-ownership="none">
+              <type name="Object" c:type="GstObject*"/>
+            </parameter>
+            <parameter name="self" transfer-ownership="none">
+              <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="_gst_reserved">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <function name="alloc_trace_available"
+              c:identifier="gst_alloc_trace_available"
+              doc="Check if alloc tracing was compiled into the core
+tracing enabled.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_get"
+              c:identifier="gst_alloc_trace_get"
+              doc="Get the named alloc trace object.
+no alloc tracer was registered with that name.">
+      <return-value transfer-ownership="full">
+        <type name="AllocTrace" c:type="GstAllocTrace*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="alloc_trace_list"
+              c:identifier="gst_alloc_trace_list"
+              doc="Get a list of all registered alloc trace objects.">
+      <return-value transfer-ownership="none">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_live_all"
+              c:identifier="gst_alloc_trace_live_all"
+              doc="Get the total number of live registered alloc trace objects.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_print_all"
+              c:identifier="gst_alloc_trace_print_all"
+              doc="Print the status of all registered alloc trace objects.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_print_live"
+              c:identifier="gst_alloc_trace_print_live"
+              doc="Print the status of all registered alloc trace objects, ignoring those
+without live objects.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="alloc_trace_set_flags_all"
+              c:identifier="gst_alloc_trace_set_flags_all"
+              doc="Enable the specified options on all registered alloc trace
+objects.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="AllocTraceFlags" c:type="GstAllocTraceFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_int_set"
+              c:identifier="gst_atomic_int_set"
+              doc="Unconditionally sets the atomic integer to @value."
+              deprecated="Use g_atomic_int_set().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic_int" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="buffer_try_new_and_alloc"
+              c:identifier="gst_buffer_try_new_and_alloc"
+              doc="Tries to create a newly allocated buffer with data of the given size. If
+the requested amount of memory can&apos;t be allocated, NULL will be returned.
+The buffer memory is not cleared.
+Note that when @size == 0, the buffer data pointer will be NULL.
+MT safe."
+              version="0.10.13">
+      <return-value transfer-ownership="full">
+        <type name="Buffer" c:type="GstBuffer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="caps_from_string"
+              c:identifier="gst_caps_from_string"
+              doc="Converts @caps from a string representation.">
+      <return-value transfer-ownership="full">
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="caps_load_thyself"
+              c:identifier="gst_caps_load_thyself"
+              doc="Creates a #GstCaps from its XML serialization.">
+      <return-value transfer-ownership="full">
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_child_added"
+              c:identifier="gst_child_proxy_child_added"
+              doc="Emits the &quot;child-added&quot; signal.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="child" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_child_removed"
+              c:identifier="gst_child_proxy_child_removed"
+              doc="Emits the &quot;child-removed&quot; signal.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="child" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_get"
+              c:identifier="gst_child_proxy_get"
+              doc="Gets properties of the parent object and its children.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_get_property"
+              c:identifier="gst_child_proxy_get_property"
+              doc="Gets a single property using the GstChildProxy mechanism.
+You are responsible for for freeing it by calling g_value_unset()">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_lookup"
+              c:identifier="gst_child_proxy_lookup"
+              doc="Looks up which object and #GParamSpec would be effected by the given @name.
+case the values for @pspec and @target are not modified. Unref @target after
+usage.
+MT safe.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="target" transfer-ownership="none">
+          <type name="Object" c:type="GstObject**"/>
+        </parameter>
+        <parameter name="pspec" transfer-ownership="none">
+          <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_set"
+              c:identifier="gst_child_proxy_set"
+              doc="Sets properties of the parent object and its children.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="first_property_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_proxy_set_property"
+              c:identifier="gst_child_proxy_set_property"
+              doc="Sets a single property using the GstChildProxy mechanism.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="class_signal_connect"
+              c:identifier="gst_class_signal_connect">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="klass" transfer-ownership="none">
+          <type name="ObjectClass" c:type="GstObjectClass*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="class_signal_emit_by_name"
+              c:identifier="gst_class_signal_emit_by_name"
+              doc="emits the named class signal.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GstObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="self" transfer-ownership="none">
+          <type name="libxml2.NodePtr" c:type="xmlNodePtr"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_add_log_function"
+              c:identifier="gst_debug_add_log_function"
+              doc="Adds the logging function to the list of logging functions.
+Be sure to use G_GNUC_NO_INSTRUMENT on that function, it is needed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="LogFunction" c:type="GstLogFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_construct_term_color"
+              c:identifier="gst_debug_construct_term_color"
+              doc="Constructs a string that can be used for getting the desired color in color
+terminals.
+You need to free the string after use.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="colorinfo" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_construct_win_color"
+              c:identifier="gst_debug_construct_win_color"
+              doc="Constructs an integer that can be used for getting the desired color in
+windows&apos; terminals (cmd.exe). As there is no mean to underline, we simply
+ignore this attribute.
+This function returns 0 on non-windows machines."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="colorinfo" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_get_all_categories"
+              c:identifier="gst_debug_get_all_categories"
+              doc="Returns a snapshot of a all categories that are currently in use . This list
+may change anytime.
+The caller has to free the list after use.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </return-value>
+    </function>
+    <function name="debug_get_default_threshold"
+              c:identifier="gst_debug_get_default_threshold"
+              doc="Returns the default threshold that is used for new categories.">
+      <return-value transfer-ownership="full">
+        <type name="DebugLevel" c:type="GstDebugLevel"/>
+      </return-value>
+    </function>
+    <function name="debug_is_active"
+              c:identifier="gst_debug_is_active"
+              doc="Checks if debugging output is activated.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="debug_is_colored"
+              c:identifier="gst_debug_is_colored"
+              doc="Checks if the debugging output should be colored.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="debug_level_get_name"
+              c:identifier="gst_debug_level_get_name"
+              doc="Get the string representation of a debugging level">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_log"
+              c:identifier="gst_debug_log"
+              doc="Logs the given message using the currently registered debugging handlers.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_log_default"
+              c:identifier="gst_debug_log_default"
+              doc="The default logging handler used by GStreamer. Logging functions get called
+whenever a macro like GST_DEBUG or similar is used. This function outputs the
+message and additional info using the glib error handler.
+You can add other handlers by using gst_debug_add_log_function().
+And you can remove this handler by calling
+gst_debug_remove_log_function(gst_debug_log_default);">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="category" transfer-ownership="none">
+          <type name="DebugCategory" c:type="GstDebugCategory*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="line" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="DebugMessage" c:type="GstDebugMessage*"/>
+        </parameter>
+        <parameter name="unused" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_print_stack_trace"
+              c:identifier="gst_debug_print_stack_trace"
+              doc="If GST_ENABLE_FUNC_INSTRUMENTATION is defined a stacktrace is available for
+gstreamer code, which can be printed with this function.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="debug_remove_log_function"
+              c:identifier="gst_debug_remove_log_function"
+              doc="Removes all registered instances of the given logging functions.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="LogFunction" c:type="GstLogFunction"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_remove_log_function_by_data"
+              c:identifier="gst_debug_remove_log_function_by_data"
+              doc="Removes all registered instances of log functions with the given user data.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_active"
+              c:identifier="gst_debug_set_active"
+              doc="If activated, debugging messages are sent to the debugging
+handlers.
+It makes sense to deactivate it for speed issues.
+&lt;note&gt;&lt;para&gt;This function is not threadsafe. It makes sense to only call it
+during initialization.&lt;/para&gt;&lt;/note&gt;">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="active" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_colored"
+              c:identifier="gst_debug_set_colored"
+              doc="Sets or unsets the use of coloured debugging output.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="colored" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_default_threshold"
+              c:identifier="gst_debug_set_default_threshold"
+              doc="Sets the default threshold to the given level and updates all categories to
+use this threshold.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_set_threshold_for_name"
+              c:identifier="gst_debug_set_threshold_for_name"
+              doc="Sets all categories which match the given glob style pattern to the given
+level.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="DebugLevel" c:type="GstDebugLevel"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="debug_unset_threshold_for_name"
+              c:identifier="gst_debug_unset_threshold_for_name"
+              doc="Resets all categories with the given name back to the default level.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="default_registry_check_feature_version"
+              c:identifier="gst_default_registry_check_feature_version"
+              doc="Checks whether a plugin feature by the given name exists in the
+default registry and whether its version is at least the
+version required.
+the same as the required version or newer, and #FALSE otherwise.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="feature_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="min_major" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="min_minor" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="min_micro" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="deinit"
+              c:identifier="gst_deinit"
+              doc="Clean up any resources created by GStreamer in gst_init().
+It is normally not needed to call this function in a normal application
+as the resources will automatically be freed when the program terminates.
+This function is therefore mostly used by testsuites and other memory
+profiling tools.
+After this call GStreamer (including this method) should not be used anymore.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="error_get_message"
+              c:identifier="gst_error_get_message"
+              doc="Get a string describing the error message in the current locale.
+current locale.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="code" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_type_get_flags"
+              c:identifier="gst_event_type_get_flags"
+              doc="Gets the #GstEventTypeFlags associated with @type.">
+      <return-value transfer-ownership="full">
+        <type name="EventTypeFlags" c:type="GstEventTypeFlags"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="EventType" c:type="GstEventType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_type_get_name"
+              c:identifier="gst_event_type_get_name"
+              doc="Get a printable name for the given event type. Do not modify or free.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="EventType" c:type="GstEventType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_type_to_quark"
+              c:identifier="gst_event_type_to_quark"
+              doc="Get the unique quark for the given event type.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="EventType" c:type="GstEventType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="filter_run"
+              c:identifier="gst_filter_run"
+              doc="Iterates over the elements in @list, calling @func with the
+list item data for each item.  If @func returns TRUE, @data is
+prepended to the list of results returned.  If @first is true,
+the search is halted after the first result is found.
+Since gst_filter_run() knows nothing about the type of @data, no
+reference will be taken (if @data refers to an object) and no copy of
+results.
+(the data contained in the list is a flat copy and does need to be
+unreferenced or freed).">
+      <return-value transfer-ownership="full" doc="when no longer needed">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="FilterFunc" c:type="GstFilterFunc"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flow_get_name"
+              c:identifier="gst_flow_get_name"
+              doc="Gets a string representing the given flow return.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ret" transfer-ownership="none">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flow_to_quark"
+              c:identifier="gst_flow_to_quark"
+              doc="Get the unique quark for the given GstFlowReturn.
+invalid return was specified.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="ret" transfer-ownership="none">
+          <type name="FlowReturn" c:type="GstFlowReturn"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_by_nick"
+              c:identifier="gst_format_get_by_nick"
+              doc="Return the format registered with the given nick.
+if the format was not registered.">
+      <return-value transfer-ownership="full">
+        <type name="Format" c:type="GstFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_details"
+              c:identifier="gst_format_get_details"
+              doc="Get details about the given format.
+MT safe.">
+      <return-value transfer-ownership="none">
+        <type name="FormatDefinition" c:type="GstFormatDefinition*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_get_name"
+              c:identifier="gst_format_get_name"
+              doc="Get a printable name for the given format. Do not modify or free.
+the format is unknown.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_iterate_definitions"
+              c:identifier="gst_format_iterate_definitions"
+              doc="Iterate all the registered formats. The format definition is read
+only.">
+      <return-value transfer-ownership="full">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+    </function>
+    <function name="format_register"
+              c:identifier="gst_format_register"
+              doc="Create a new GstFormat based on the nick or return an
+already registered format with that nick.
+with the same nick.
+MT safe.">
+      <return-value transfer-ownership="full">
+        <type name="Format" c:type="GstFormat"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="format_to_quark"
+              c:identifier="gst_format_to_quark"
+              doc="Get the unique quark for the given format.
+is unknown.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="formats_contains"
+              c:identifier="gst_formats_contains"
+              doc="See if the given format is inside the format array.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="formats" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="Format" c:type="GstFormat"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="implements_interface_cast"
+              c:identifier="gst_implements_interface_cast"
+              doc="cast a given object to an interface type, and check whether this
+interface is supported for this specific instance.">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="from"
+                   transfer-ownership="none"
+                   doc="from which to cast to the interface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="implements_interface_check"
+              c:identifier="gst_implements_interface_check"
+              doc="check a given object for an interface implementation, and check
+whether this interface is supported for this specific instance.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="from"
+                   transfer-ownership="none"
+                   doc="from which to check from for the interface">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init"
+              c:identifier="gst_init"
+              doc="Initializes the GStreamer library, setting up internal path lists,
+registering built-in elements, and loading standard plugins.
+Unless the plugin registry is disabled at compile time, the registry will be
+loaded. By default this will also check if the registry cache needs to be
+updated and rescan all plugins if needed. See gst_update_registry() for
+details and section
+&lt;link linkend=&quot;gst-running&quot;&gt;Running GStreamer Applications&lt;/link&gt;
+for how to disable automatic registry updates.
+This function should be called before calling any other GLib functions. If
+this is not an option, your program must initialise the GLib thread system
+using g_thread_init() before any other GLib functions are called.
+&lt;note&gt;&lt;para&gt;
+This function will terminate your program if it was unable to initialize
+GStreamer for some reason.  If you want your program to fall back,
+use gst_init_check() instead.
+&lt;/para&gt;&lt;/note&gt;
+functions in other glib-style libraries, such as gtk_init().  In
+particular, unknown command line options cause this function to
+abort program execution.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   transfer-ownership="full"
+                   doc="pointer to application&apos;s argc">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   transfer-ownership="full"
+                   allow-none="1"
+                   doc="pointer to application&apos;s argv">
+          <array length="0" c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_check"
+              c:identifier="gst_init_check"
+              doc="Initializes the GStreamer library, setting up internal path lists,
+registering built-in elements, and loading standard plugins.
+This function will return %FALSE if GStreamer could not be initialized
+for some reason.  If you want your program to fail fatally,
+use gst_init() instead.
+This function should be called before calling any other GLib functions. If
+this is not an option, your program must initialise the GLib thread system
+using g_thread_init() before any other GLib functions are called."
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   transfer-ownership="full"
+                   doc="pointer to application&apos;s argc">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   transfer-ownership="full"
+                   allow-none="1"
+                   doc="pointer to application&apos;s argv">
+          <array length="0" c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_get_option_group"
+              c:identifier="gst_init_get_option_group"
+              doc="Returns a #GOptionGroup with GStreamer&apos;s argument specifications. The
+group is set up to use standard GOption callbacks, so when using this
+group in combination with GOption parsing methods, all argument parsing
+and initialization is automated.
+This function is useful if you want to integrate GStreamer with other
+libraries that use GOption (see g_option_context_add_group() ).
+If you use this function, you should make sure you initialise the GLib
+threading system as one of the very first things in your program
+(see the example at the beginning of this section).">
+      <return-value transfer-ownership="full">
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+    </function>
+    <function name="is_tag_list"
+              c:identifier="gst_is_tag_list"
+              doc="Checks if the given pointer is a taglist.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="p" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="message_type_get_name"
+              c:identifier="gst_message_type_get_name"
+              doc="Get a printable name for the given message type. Do not modify or free.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="MessageType" c:type="GstMessageType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="message_type_to_quark"
+              c:identifier="gst_message_type_to_quark"
+              doc="Get the unique quark for the given message type.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="MessageType" c:type="GstMessageType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_fraction"
+              c:identifier="gst_param_spec_fraction"
+              doc="This function creates a fraction GParamSpec for use by objects/elements
+that want to expose properties of fraction type. This function is typically
+used in connection with g_object_class_install_property() in a GObjects&apos;s
+instance_init function."
+              version="0.10.14">
+      <return-value transfer-ownership="full">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="min_num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="min_denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="max_num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="max_denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="default_num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="default_denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_mini_object"
+              c:identifier="gst_param_spec_mini_object"
+              doc="Creates a new #GParamSpec instance that hold #GstMiniObject references.">
+      <return-value transfer-ownership="full">
+        <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="object_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_bin_from_description"
+              c:identifier="gst_parse_bin_from_description"
+              doc="for unlinked source or sink pads within the bin
+This is a convenience wrapper around gst_parse_launch() to create a
+#GstBin from a gst-launch-style pipeline description. See
+gst_parse_launch() and the gst-launch man page for details about the
+syntax. Ghost pads on the bin for unlinked source or sink pads
+within the bin can automatically be created (but only a maximum of
+one ghost pad for each direction will be created; if you expect
+multiple unlinked source pads or multiple unlinked sink pads
+and want them all ghosted, you will have to create the ghost pads
+yourself)."
+              version="0.10.3"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bin_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="ghost_unlinked_pads" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_bin_from_description_full"
+              c:identifier="gst_parse_bin_from_description_full"
+              doc="for unlinked source or sink pads within the bin
+This is a convenience wrapper around gst_parse_launch() to create a
+#GstBin from a gst-launch-style pipeline description. See
+gst_parse_launch() and the gst-launch man page for details about the
+syntax. Ghost pads on the bin for unlinked source or sink pads
+within the bin can automatically be created (but only a maximum of
+one ghost pad for each direction will be created; if you expect
+multiple unlinked source pads or multiple unlinked sink pads
+and want them all ghosted, you will have to create the ghost pads
+yourself)."
+              version="0.10.20"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bin_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="ghost_unlinked_pads" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none" doc="or %NULL">
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParseFlags" c:type="GstParseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launch"
+              c:identifier="gst_parse_launch"
+              doc="Create a new pipeline based on command line syntax.
+Please note that you might get a return value that is not %NULL even though
+the @error is set. In this case there was a recoverable parsing error and you
+can try to play the pipeline.
+element is specified by the @pipeline_description, all elements are put into
+a #GstPipeline, which than is returned."
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pipeline_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launch_full"
+              c:identifier="gst_parse_launch_full"
+              doc="Create a new pipeline based on command line syntax.
+Please note that you might get a return value that is not %NULL even though
+the @error is set. In this case there was a recoverable parsing error and you
+can try to play the pipeline.
+element is specified by the @pipeline_description, all elements are put into
+a #GstPipeline, which then is returned."
+              version="0.10.20"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pipeline_description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none" doc="or %NULL">
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParseFlags" c:type="GstParseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launchv"
+              c:identifier="gst_parse_launchv"
+              doc="Create a new element based on command line syntax.
+An error does not mean that the pipeline could not be constructed."
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="argv" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_launchv_full"
+              c:identifier="gst_parse_launchv_full"
+              doc="Create a new element based on command line syntax.
+An error does not mean that the pipeline could not be constructed.
+partially-constructed bin or element will be returned and @error will be set
+(unless you passed #GST_PARSE_FLAG_FATAL_ERRORS in @flags, then %NULL will
+always be returned on failure)"
+              version="0.10.20"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Element" c:type="GstElement*"/>
+      </return-value>
+      <parameters>
+        <parameter name="argv" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="context" transfer-ownership="none" doc="or %NULL">
+          <type name="ParseContext" c:type="GstParseContext*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParseFlags" c:type="GstParseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="print_element_args"
+              c:identifier="gst_print_element_args"
+              doc="Print the element argument in a human readable format in the given
+GString.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="indent" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="element" transfer-ownership="none">
+          <type name="Element" c:type="GstElement*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="print_pad_caps"
+              c:identifier="gst_print_pad_caps"
+              doc="Write the pad capabilities in a human readable format into
+the given GString.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buf" transfer-ownership="none">
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+        <parameter name="indent" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="pad" transfer-ownership="none">
+          <type name="Pad" c:type="GstPad*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_get_by_nick"
+              c:identifier="gst_query_type_get_by_nick"
+              doc="Get the query type registered with @nick.
+if the query was not registered.">
+      <return-value transfer-ownership="full">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_get_details"
+              c:identifier="gst_query_type_get_details"
+              doc="Get details about the given #GstQueryType.">
+      <return-value transfer-ownership="none">
+        <type name="QueryTypeDefinition" c:type="GstQueryTypeDefinition*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_get_name"
+              c:identifier="gst_query_type_get_name"
+              doc="Get a printable name for the given query type. Do not modify or free.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_iterate_definitions"
+              c:identifier="gst_query_type_iterate_definitions"
+              doc="Get a #GstIterator of all the registered query types. The definitions
+iterated over are read only.">
+      <return-value transfer-ownership="full">
+        <type name="Iterator" c:type="GstIterator*"/>
+      </return-value>
+    </function>
+    <function name="query_type_register"
+              c:identifier="gst_query_type_register"
+              doc="Create a new GstQueryType based on the nick or return an
+already registered query with that nick
+with the same nick.">
+      <return-value transfer-ownership="full">
+        <type name="QueryType" c:type="GstQueryType"/>
+      </return-value>
+      <parameters>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_type_to_quark"
+              c:identifier="gst_query_type_to_quark"
+              doc="Get the unique quark for the given query type.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="query" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_types_contains"
+              c:identifier="gst_query_types_contains"
+              doc="See if the given #GstQueryType is inside the @types query types array.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="types" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="QueryType" c:type="GstQueryType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="segtrap_is_enabled"
+              c:identifier="gst_segtrap_is_enabled"
+              doc="Some functions in the GStreamer core might install a custom SIGSEGV handler
+to better catch and report errors to the application. Currently this feature
+is enabled by default when loading plugins.
+Applications might want to disable this behaviour with the
+gst_segtrap_set_enabled() function. This is typically done if the application
+wants to install its own handler without GStreamer interfering."
+              version="0.10.10">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="segtrap_set_enabled"
+              c:identifier="gst_segtrap_set_enabled"
+              doc="Applications might want to disable/enable the SIGSEGV handling of
+the GStreamer core. See gst_segtrap_is_enabled() for more information."
+              version="0.10.10">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enabled" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_empty_new"
+              c:identifier="gst_structure_empty_new"
+              doc="Creates a new, empty #GstStructure with the given @name.
+See gst_structure_set_name() for constraints on the @name parameter.">
+      <return-value transfer-ownership="full">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_from_string"
+              c:identifier="gst_structure_from_string"
+              doc="Creates a #GstStructure from a string representation.
+If end is not NULL, a pointer to the place inside the given string
+where parsing ended will be returned.
+be parsed. Free with gst_structure_free() after use.">
+      <return-value transfer-ownership="full">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_id_empty_new"
+              c:identifier="gst_structure_id_empty_new"
+              doc="Creates a new, empty #GstStructure with the given name as a GQuark.">
+      <return-value transfer-ownership="full">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="quark" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="structure_id_new"
+              c:identifier="gst_structure_id_new"
+              doc="Creates a new #GstStructure with the given name as a GQuark, followed by
+fieldname quark, GType, argument(s) &quot;triplets&quot; in the same format as
+gst_structure_id_set(). Basically a convenience wrapper around
+gst_structure_id_empty_new() and gst_structure_id_set().
+The last variable argument must be NULL (or 0)."
+              version="0.10.24">
+      <return-value transfer-ownership="full">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name_quark" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="field_quark" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_exists"
+              c:identifier="gst_tag_exists"
+              doc="Checks if the given type is already registered.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_description"
+              c:identifier="gst_tag_get_description"
+              doc="Returns the human-readable description of this tag, You must not change or
+free this string.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_flag"
+              c:identifier="gst_tag_get_flag"
+              doc="Gets the flag of @tag.">
+      <return-value transfer-ownership="full">
+        <type name="TagFlag" c:type="GstTagFlag"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_nick" c:identifier="gst_tag_get_nick">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_get_type"
+              c:identifier="gst_tag_get_type"
+              doc="Gets the #GType used for this tag.">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_is_fixed"
+              c:identifier="gst_tag_is_fixed"
+              doc="Checks if the given tag is fixed. A fixed tag can only contain one value.
+Unfixed tags can contain lists of values.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_list_copy_value"
+              c:identifier="gst_tag_list_copy_value"
+              doc="Copies the contents for the given tag into the value,
+merging multiple values into one if multiple values are associated
+with the tag.
+You must g_value_unset() the value after use.
+given list.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <type name="TagList" c:type="GstTagList*"/>
+        </parameter>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_merge_strings_with_comma"
+              c:identifier="gst_tag_merge_strings_with_comma"
+              doc="This is a convenience function for the func argument of gst_tag_register().
+It concatenates all given strings using a comma. The tag must be registered
+as a G_TYPE_STRING or this function will fail.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_merge_use_first"
+              c:identifier="gst_tag_merge_use_first"
+              doc="This is a convenience function for the func argument of gst_tag_register().
+It creates a copy of the first value from the list.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tag_register"
+              c:identifier="gst_tag_register"
+              doc="Registers a new tag type for the use with GStreamer&apos;s type system. If a type
+with that name is already registered, that one is used.
+The old registration may have used a different type however. So don&apos;t rely
+on your supplied values.
+that there can only be one single value for this tag in a tag list and
+any additional values will silenty be discarded when being added (unless
+#GST_TAG_MERGE_REPLACE, #GST_TAG_MERGE_REPLACE_ALL, or
+#GST_TAG_MERGE_PREPEND is used as merge mode, in which case the new
+value will replace the old one in the list).
+The merge function will be called from gst_tag_list_copy_value() when
+it is required that one or more values for a tag be condensed into
+one single value. This may happen from gst_tag_list_get_string(),
+gst_tag_list_get_int(), gst_tag_list_get_double() etc. What will happen
+exactly in that case depends on how the tag was registered and if a
+merge function was supplied and if so which one.
+gst_tag_merge_strings_with_comma().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flag" transfer-ownership="none">
+          <type name="TagFlag" c:type="GstTagFlag"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="blurb" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="TagMergeFunc" c:type="GstTagMergeFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="trace_read_tsc"
+              c:identifier="gst_trace_read_tsc"
+              doc="Read a platform independent timer value that can be used in
+benchmarks.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dst" direction="out" transfer-ownership="full">
+          <type name="int64" c:type="gint64*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_find_register"
+              c:identifier="gst_type_find_register"
+              doc="passing NULL only works in GStreamer 0.10.16 and later)
+succeeds
+is unloaded.
+is unloaded.
+Registers a new typefind function to be used for typefinding. After
+registering this function will be available for typefinding.
+This function is typically called during an element&apos;s plugin initialization.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="Plugin" c:type="GstPlugin*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="rank"
+                   transfer-ownership="none"
+                   doc="of this typefind function">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="TypeFindFunction" c:type="GstTypeFindFunction"/>
+        </parameter>
+        <parameter name="extensions" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="possible_caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data_notify" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_static_full"
+              c:identifier="gst_type_register_static_full"
+              doc="derive from
+Location of the default vtable inititalization function for interface
+types. (optional)
+Location of the default vtable finalization function for interface types.
+(optional)
+instantiatable types only).
+memory for (0 indicates no caching). Ignored on recent GLib&apos;s.
+for instantiatable types only).
+GValues of this type (usually only useful for fundamental types).
+Helper function which constructs a #GTypeInfo structure and registers a
+GType, but which generates less linker overhead than a static const
+#GTypeInfo structure. For further details of the parameters, please see
+#GTypeInfo in the GLib documentation.
+Registers type_name as the name of a new static type derived from
+parent_type. The value of flags determines the nature (e.g. abstract or
+not) of the type. It works by filling a GTypeInfo struct and calling
+g_type_register_static()."
+              version="0.10.14">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="class_size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="base_init" transfer-ownership="none" scope="call">
+          <type name="GObject.BaseInitFunc" c:type="GBaseInitFunc"/>
+        </parameter>
+        <parameter name="base_finalize" transfer-ownership="none" scope="call">
+          <type name="GObject.BaseFinalizeFunc" c:type="GBaseFinalizeFunc"/>
+        </parameter>
+        <parameter name="class_init" transfer-ownership="none" scope="call">
+          <type name="GObject.ClassInitFunc" c:type="GClassInitFunc"/>
+        </parameter>
+        <parameter name="class_finalize"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="7">
+          <type name="GObject.ClassFinalizeFunc" c:type="GClassFinalizeFunc"/>
+        </parameter>
+        <parameter name="class_data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="instance_size"
+                   transfer-ownership="none"
+                   doc="structure (required for">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="n_preallocs"
+                   transfer-ownership="none"
+                   doc="instances to reserve">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="instance_init" transfer-ownership="none" scope="call">
+          <type name="GObject.InstanceInitFunc" c:type="GInstanceInitFunc"/>
+        </parameter>
+        <parameter name="value_table" transfer-ownership="none">
+          <type name="GObject.TypeValueTable" c:type="GTypeValueTable*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.TypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="update_registry"
+              c:identifier="gst_update_registry"
+              doc="Forces GStreamer to re-scan its plugin paths and update the default
+plugin registry.
+Applications will almost never need to call this function, it is only
+useful if the application knows new plugins have been installed (or old
+ones removed) since the start of the application (or, to be precise, the
+first call to gst_init()) and the application wants to make use of any
+newly-installed plugins without restarting the application.
+Applications should assume that the registry update is neither atomic nor
+thread-safe and should therefore not have any dynamic pipelines running
+(including the playbin and decodebin elements) and should also not create
+any elements or access the GStreamer registry while the update is in
+progress.
+Note that this function may block for a significant amount of time.
+imply that there were changes), otherwise %FALSE."
+              version="0.10.12">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="uri_construct"
+              c:identifier="gst_uri_construct"
+              doc="Constructs a URI for a given valid protocol and location.
+is not valid, or the given location is NULL.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="location" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_get_location"
+              c:identifier="gst_uri_get_location"
+              doc="Extracts the location out of a given valid URI, ie. the protocol and &quot;://&quot;
+are stripped from the URI, which means that the location returned includes
+the hostname if one is specified. The returned string must be freed using
+g_free().
+the URI does not contain a location, an empty string is returned.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_get_protocol"
+              c:identifier="gst_uri_get_protocol"
+              doc="Extracts the protocol out of a given valid URI. The returned string must be
+freed using g_free().">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_has_protocol"
+              c:identifier="gst_uri_has_protocol"
+              doc="Checks if the protocol of a given valid URI matches @protocol."
+              version="0.10.4">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_is_valid"
+              c:identifier="gst_uri_is_valid"
+              doc="Tests if the given string is a valid URI identifier. URIs start with a valid
+scheme followed by &quot;:&quot; and maybe a string identifying the location.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_protocol_is_supported"
+              c:identifier="gst_uri_protocol_is_supported"
+              doc="Checks if an element exists that supports the given URI protocol. Note
+that a positive return value does not imply that a subsequent call to
+gst_element_make_from_uri() is guaranteed to work."
+              version="0.10.13">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="URIType" c:type="GstURIType"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_protocol_is_valid"
+              c:identifier="gst_uri_protocol_is_valid"
+              doc="Tests if the given string is a valid protocol identifier. Protocols
+must consist of alphanumeric characters, &apos;+&apos;, &apos;-&apos; and &apos;.&apos; and must
+start with a alphabetic character. See RFC 3986 Section 3.1.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_array_binary_search"
+              c:identifier="gst_util_array_binary_search"
+              doc="Searches inside @array for @search_data by using the comparison function
+As @search_data is always passed as second argument to @search_func it&apos;s
+not required that @search_data has the same type as the array elements.
+The complexity of this search function is O(log (num_elements))."
+              version="0.10.23">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="num_elements" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="element_size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="search_func" transfer-ownership="none" scope="call">
+          <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="SearchMode" c:type="GstSearchMode"/>
+        </parameter>
+        <parameter name="search_data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_double_to_fraction"
+              c:identifier="gst_util_double_to_fraction"
+              doc="Transforms a #gdouble to a fraction and simplifies
+the result."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="dest_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="dest_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_dump_mem"
+              c:identifier="gst_util_dump_mem"
+              doc="Dumps the memory block into a hex representation. Useful for debugging.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_add"
+              c:identifier="gst_util_fraction_add"
+              doc="Adds the fractions @a_n/@a_d and @b_n/@b_d and stores
+the result in @res_n and @res_d."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="a_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="res_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="res_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_multiply"
+              c:identifier="gst_util_fraction_multiply"
+              doc="Multiplies the fractions @a_n/@a_d and @b_n/@b_d and stores
+the result in @res_n and @res_d."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="a_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="res_n" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="res_d" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_fraction_to_double"
+              c:identifier="gst_util_fraction_to_double"
+              doc="Transforms a #gdouble to a fraction and simplifies the result."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="src_d" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="dest" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_gdouble_to_guint64"
+              c:identifier="gst_util_gdouble_to_guint64">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_get_timestamp"
+              c:identifier="gst_util_get_timestamp"
+              doc="Get a timestamp as GstClockTime to be used for interval meassurements.
+The timestamp should not be interpreted in any other way."
+              version="0.10.16">
+      <return-value transfer-ownership="full">
+        <type name="ClockTime" c:type="GstClockTime"/>
+      </return-value>
+    </function>
+    <function name="util_greatest_common_divisor"
+              c:identifier="gst_util_greatest_common_divisor"
+              doc="Calculates the greatest common divisor of @a
+and @b."
+              version="0.10.26">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_guint64_to_gdouble"
+              c:identifier="gst_util_guint64_to_gdouble">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_seqnum_compare"
+              c:identifier="gst_util_seqnum_compare"
+              doc="Compare two sequence numbers, handling wraparound.
+The current implementation just returns (gint32)(@s1 - @s2).
+positive number if @s1 is after @s2."
+              version="0.10.22">
+      <return-value transfer-ownership="none">
+        <type name="int32" c:type="gint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="s1" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="s2" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_seqnum_next"
+              c:identifier="gst_util_seqnum_next"
+              doc="Return a constantly incrementing sequence number.
+This function is used internally to GStreamer to be able to determine which
+events and messages are &quot;the same&quot;. For example, elements may set the seqnum
+on a segment-done message to be the same as that of the last seek event, to
+indicate that event and the message correspond to the same segment.
+overflow back to 0 at some point. Use gst_util_seqnum_compare() to make sure
+you handle wraparound correctly."
+              version="0.10.22">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+    </function>
+    <function name="util_set_object_arg"
+              c:identifier="gst_util_set_object_arg"
+              doc="Convertes the string value to the type of the objects argument and
+sets the argument with it.
+Note that this function silently returns if @object has no property named">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_set_value_from_string"
+              c:identifier="gst_util_set_value_from_string"
+              doc="Converts the string to the type of the value and
+sets the value with it.
+Note that this function is dangerous as it does not return any indication
+if the conversion worked or not.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value_str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale"
+              c:identifier="gst_util_uint64_scale"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.
+This function can potentially be very slow if val and num are both
+greater than G_MAXUINT32.
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer it is truncated.  See also
+gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil(),
+gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
+gst_util_uint64_scale_int_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_ceil"
+              c:identifier="gst_util_uint64_scale_ceil"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.
+This function can potentially be very slow if val and num are both
+greater than G_MAXUINT32.
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded up.  See also
+gst_util_uint64_scale(), gst_util_uint64_scale_round(),
+gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
+gst_util_uint64_scale_int_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_int"
+              c:identifier="gst_util_uint64_scale_int"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.  @num must be non-negative and
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is truncated.  See also
+gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil(),
+gst_util_uint64_scale(), gst_util_uint64_scale_round(),
+gst_util_uint64_scale_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none" doc="to scale.">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_int_ceil"
+              c:identifier="gst_util_uint64_scale_int_ceil"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.  @num must be non-negative and
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded up.  See also
+gst_util_uint64_scale_int(), gst_util_uint64_scale_int_round(),
+gst_util_uint64_scale(), gst_util_uint64_scale_round(),
+gst_util_uint64_scale_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none" doc="to scale.">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_int_round"
+              c:identifier="gst_util_uint64_scale_int_round"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.  @num must be non-negative and
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded to the nearest integer
+(half-way cases are rounded up).  See also gst_util_uint64_scale_int(),
+gst_util_uint64_scale_int_ceil(), gst_util_uint64_scale(),
+gst_util_uint64_scale_round(), gst_util_uint64_scale_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none" doc="to scale.">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="util_uint64_scale_round"
+              c:identifier="gst_util_uint64_scale_round"
+              doc="Scale @val by the rational number @num / @denom, avoiding overflows and
+underflows and without loss of precision.
+This function can potentially be very slow if val and num are both
+greater than G_MAXUINT32.
+function returns G_MAXUINT64.  If the result is not exactly
+representable as an integer, it is rounded to the nearest integer
+(half-way cases are rounded up).  See also gst_util_uint64_scale(),
+gst_util_uint64_scale_ceil(), gst_util_uint64_scale_int(),
+gst_util_uint64_scale_int_round(), gst_util_uint64_scale_int_ceil().">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="val" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="denom" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_append_value"
+              c:identifier="gst_value_array_append_value"
+              doc="Appends @append_value to the GstValueArray in @value.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="append_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_get_size"
+              c:identifier="gst_value_array_get_size"
+              doc="Gets the number of values contained in @value.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_get_value"
+              c:identifier="gst_value_array_get_value"
+              doc="Gets the value that is a member of the array contained in @value and
+has the index @index.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_array_prepend_value"
+              c:identifier="gst_value_array_prepend_value"
+              doc="Prepends @prepend_value to the GstValueArray in @value.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="prepend_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_compare"
+              c:identifier="gst_value_can_compare"
+              doc="Determines if @value1 and @value2 can be compared.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_intersect"
+              c:identifier="gst_value_can_intersect"
+              doc="Determines if intersecting two values will produce a valid result.
+Two values will produce a valid intersection if they have the same
+type, or if there is a method (registered by
+gst_value_register_intersect_func()) to calculate the intersection.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_subtract"
+              c:identifier="gst_value_can_subtract"
+              doc="Checks if it&apos;s possible to subtract @subtrahend from @minuend.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="minuend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_can_union"
+              c:identifier="gst_value_can_union"
+              doc="Determines if @value1 and @value2 can be non-trivially unioned.
+Any two values can be trivially unioned by adding both of them
+to a GstValueList.  However, certain types have the possibility
+to be unioned in a simpler way.  For example, an integer range
+and an integer can be unioned if the integer is a subset of the
+integer range.  If there is the possibility that two values can
+be unioned, this function returns TRUE.
+be unioned.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_compare"
+              c:identifier="gst_value_compare"
+              doc="Compares @value1 and @value2.  If @value1 and @value2 cannot be
+compared, the function returns GST_VALUE_UNORDERED.  Otherwise,
+if @value1 is greater than @value2, GST_VALUE_GREATER_THAN is returned.
+If @value1 is less than @value2, GST_VALUE_LESS_THAN is returned.
+If the values are equal, GST_VALUE_EQUAL is returned.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_deserialize"
+              c:identifier="gst_value_deserialize"
+              doc="Tries to deserialize a string into the type specified by the given GValue.
+If the operation succeeds, TRUE is returned, FALSE otherwise.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_dup_mini_object"
+              c:identifier="gst_value_dup_mini_object"
+              doc="Get the contents of a %GST_TYPE_MINI_OBJECT derived #GValue,
+increasing its reference count."
+              version="0.10.20">
+      <return-value transfer-ownership="full">
+        <type name="MiniObject" c:type="GstMiniObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_fraction_multiply"
+              c:identifier="gst_value_fraction_multiply"
+              doc="Multiplies the two #GValue items containing a #GST_TYPE_FRACTION and sets">
+      <return-value transfer-ownership="none" doc="TRUE otherwise.">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="product" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="factor1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="factor2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_fraction_subtract"
+              c:identifier="gst_value_fraction_subtract"
+              doc="Subtracts the @subtrahend from the @minuend and sets @dest to the result.">
+      <return-value transfer-ownership="none" doc="TRUE otherwise.">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="minuend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_caps"
+              c:identifier="gst_value_get_caps"
+              doc="Gets the contents of @value.">
+      <return-value transfer-ownership="none">
+        <type name="Caps" c:type="GstCaps*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_date"
+              c:identifier="gst_value_get_date"
+              doc="Gets the contents of @value.">
+      <return-value transfer-ownership="none">
+        <type name="GLib.Date" c:type="GDate*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_double_range_max"
+              c:identifier="gst_value_get_double_range_max"
+              doc="Gets the maximum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_double_range_min"
+              c:identifier="gst_value_get_double_range_min"
+              doc="Gets the minimum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fourcc"
+              c:identifier="gst_value_get_fourcc"
+              doc="Gets the #guint32 fourcc contained in @value.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_denominator"
+              c:identifier="gst_value_get_fraction_denominator"
+              doc="Gets the denominator of the fraction specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_numerator"
+              c:identifier="gst_value_get_fraction_numerator"
+              doc="Gets the numerator of the fraction specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_range_max"
+              c:identifier="gst_value_get_fraction_range_max"
+              doc="Gets the maximum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_fraction_range_min"
+              c:identifier="gst_value_get_fraction_range_min"
+              doc="Gets the minimum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_int_range_max"
+              c:identifier="gst_value_get_int_range_max"
+              doc="Gets the maximum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_int_range_min"
+              c:identifier="gst_value_get_int_range_min"
+              doc="Gets the minimum of the range specified by @value.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_mini_object"
+              c:identifier="gst_value_get_mini_object"
+              doc="Get the contents of a %GST_TYPE_MINI_OBJECT derived #GValue.
+Does not increase the refcount of the returned object.">
+      <return-value transfer-ownership="full">
+        <type name="MiniObject" c:type="GstMiniObject*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_get_structure"
+              c:identifier="gst_value_get_structure"
+              doc="Gets the contents of @value."
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="Structure" c:type="GstStructure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_init_and_copy"
+              c:identifier="gst_value_init_and_copy"
+              doc="Initialises the target value to be of the same type as source and then copies
+the contents from source to target.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_intersect"
+              c:identifier="gst_value_intersect"
+              doc="intersection value
+Calculates the intersection of two values.  If the values have
+a non-empty intersection, the value representing the intersection
+is placed in @dest.  If the intersection is non-empty, @dest is
+not modified.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_is_fixed"
+              c:identifier="gst_value_is_fixed"
+              doc="Tests if the given GValue, if available in a GstStructure (or any other
+ranges) value.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_append_value"
+              c:identifier="gst_value_list_append_value"
+              doc="Appends @append_value to the GstValueList in @value.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="append_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_concat"
+              c:identifier="gst_value_list_concat"
+              doc="Concatenates copies of @value1 and @value2 into a list.  Values that are not
+of type #GST_TYPE_LIST are treated as if they were lists of length 1.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_get_size"
+              c:identifier="gst_value_list_get_size"
+              doc="Gets the number of values contained in @value.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_get_value"
+              c:identifier="gst_value_list_get_value"
+              doc="Gets the value that is a member of the list contained in @value and
+has the index @index.">
+      <return-value transfer-ownership="none">
+        <type name="GObject.Value" c:type="GValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_list_prepend_value"
+              c:identifier="gst_value_list_prepend_value"
+              doc="Prepends @prepend_value to the GstValueList in @value.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="prepend_value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register"
+              c:identifier="gst_value_register"
+              doc="Registers functions to perform calculations on #GValue items of a given
+type. Each type can only be added once.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="table" transfer-ownership="none">
+          <type name="ValueTable" c:type="GstValueTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_intersect_func"
+              c:identifier="gst_value_register_intersect_func"
+              doc="Registers a function that is called to calculate the intersection
+of the values having the types @type1 and @type2.
+Intersect functions should be registered at startup before any pipelines are
+started, as gst_value_register_intersect_func() is not thread-safe and
+cannot be used at the same time as gst_value_intersect() or
+gst_value_can_intersect().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type1" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type2" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="ValueIntersectFunc" c:type="GstValueIntersectFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_subtract_func"
+              c:identifier="gst_value_register_subtract_func"
+              doc="Registers @func as a function capable of subtracting the values of
+Subtract functions should be registered at startup before any pipelines are
+started, as gst_value_register_subtract_func() is not thread-safe and
+cannot be used at the same time as gst_value_subtract().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="minuend_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="subtrahend_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="ValueSubtractFunc" c:type="GstValueSubtractFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_register_union_func"
+              c:identifier="gst_value_register_union_func"
+              doc="Registers a union function that can create a union between #GValue items
+of the type @type1 and @type2.
+Union functions should be registered at startup before any pipelines are
+started, as gst_value_register_union_func() is not thread-safe and cannot
+be used at the same time as gst_value_union() or gst_value_can_union().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type1" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="type2" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="ValueUnionFunc" c:type="GstValueUnionFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_serialize"
+              c:identifier="gst_value_serialize"
+              doc="tries to transform the given @value into a string representation that allows
+getting back this string later on using gst_value_deserialize().">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_caps"
+              c:identifier="gst_value_set_caps"
+              doc="Sets the contents of @value to @caps.  The actual
+#GstCaps structure is copied before it is used.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="caps" transfer-ownership="none">
+          <type name="Caps" c:type="GstCaps*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_date"
+              c:identifier="gst_value_set_date"
+              doc="Sets the contents of @value to coorespond to @date.  The actual
+#GDate structure is copied before it is used.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="date" transfer-ownership="none">
+          <type name="GLib.Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_double_range"
+              c:identifier="gst_value_set_double_range"
+              doc="Sets @value to the range specified by @start and @end.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fourcc"
+              c:identifier="gst_value_set_fourcc"
+              doc="Sets @value to @fourcc.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="fourcc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fraction"
+              c:identifier="gst_value_set_fraction"
+              doc="Sets @value to the fraction specified by @numerator over @denominator.
+The fraction gets reduced to the smallest numerator and denominator,
+and if necessary the sign is moved to the numerator.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="numerator" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denominator" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fraction_range"
+              c:identifier="gst_value_set_fraction_range"
+              doc="Sets @value to the range specified by @start and @end.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_fraction_range_full"
+              c:identifier="gst_value_set_fraction_range_full"
+              doc="Sets @value to the range specified by @numerator_start/@denominator_start
+and @numerator_end/@denominator_end.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="numerator_start" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denominator_start" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="numerator_end" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="denominator_end" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_int_range"
+              c:identifier="gst_value_set_int_range"
+              doc="Sets @value to the range specified by @start and @end.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_mini_object"
+              c:identifier="gst_value_set_mini_object"
+              doc="Set the contents of a %GST_TYPE_MINI_OBJECT derived #GValue to
+The caller retains ownership of the reference.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="mini_object" transfer-ownership="none">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_set_structure"
+              c:identifier="gst_value_set_structure"
+              doc="Sets the contents of @value to @structure.  The actual"
+              version="0.10.15">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="structure" transfer-ownership="none">
+          <type name="Structure" c:type="GstStructure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_subtract"
+              c:identifier="gst_value_subtract"
+              doc="Subtracts @subtrahend from @minuend and stores the result in @dest.
+Note that this means subtraction as in sets, not as in mathematics.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="minuend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="subtrahend" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_take_mini_object"
+              c:identifier="gst_value_take_mini_object"
+              doc="Set the contents of a %GST_TYPE_MINI_OBJECT derived #GValue to
+Takes over the ownership of the caller&apos;s reference to @mini_object;
+the caller doesn&apos;t have to unref it any more.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="mini_object" transfer-ownership="none">
+          <type name="MiniObject" c:type="GstMiniObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_union"
+              c:identifier="gst_value_union"
+              doc="Creates a GValue corresponding to the union of @value1 and @value2.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value1" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="value2" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version"
+              c:identifier="gst_version"
+              doc="Gets the version number of the GStreamer library.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="major" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="minor" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="micro" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="nano" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version_string"
+              c:identifier="gst_version_string"
+              doc="This function returns a string that is useful for describing this version">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/basis/gstreamer/authors.txt b/basis/gstreamer/authors.txt
new file mode 100644 (file)
index 0000000..ce9bcc8
--- /dev/null
@@ -0,0 +1 @@
+Anton Gorenko
\ No newline at end of file
diff --git a/basis/gstreamer/ffi/ffi.factor b/basis/gstreamer/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..ac31e7d
--- /dev/null
@@ -0,0 +1,27 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien alien.syntax alien.libraries combinators kernel
+system
+gobject-introspection glib.ffi gmodule.ffi gobject.ffi ;
+EXCLUDE: alien.c-types => pointer ;
+IN: gstreamer.ffi
+
+<<
+"gstreamer" {
+    { [ os winnt? ] [ drop ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgstreamer-0.10.so" cdecl add-library ] }
+} cond
+>>
+
+TYPEDEF: gpointer GstClockID
+TYPEDEF: guint64 GstClockTime
+TYPEDEF: gint64 GstClockTimeDiff
+
+! types from libxml2
+TYPEDEF: void* xmlNodePtr
+TYPEDEF: void* xmlDocPtr
+TYPEDEF: void* xmlNsPtr
+
+GIR: vocab:gstreamer/Gst-0.10.gir
+
diff --git a/basis/gstreamer/gstreamer.factor b/basis/gstreamer/gstreamer.factor
new file mode 100644 (file)
index 0000000..174fbc6
--- /dev/null
@@ -0,0 +1,5 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gstreamer.ffi ;
+IN: gstreamer
+
diff --git a/basis/gstreamer/summary.txt b/basis/gstreamer/summary.txt
new file mode 100644 (file)
index 0000000..4094ff9
--- /dev/null
@@ -0,0 +1 @@
+GStreamer binding
diff --git a/basis/gstreamer/tags.txt b/basis/gstreamer/tags.txt
new file mode 100755 (executable)
index 0000000..bb863cf
--- /dev/null
@@ -0,0 +1 @@
+bindings
index c772fd11da1b335ceea97d8829e6ad6922363e1c..7508386e2c91f332420ed1bed8914be05446d5d1 100644 (file)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: alien.c-types alien.strings fry byte-arrays classes.struct
 io.encodings.utf8 kernel locals math prettyprint 
-gst.ffi glib.ffi gobject.ffi gtk.ffi ;
+gstreamer.ffi glib.ffi gobject.ffi gtk.ffi ;
 IN: gir.samples.lowlevel.gstreamer
 
 ! CONSTANT: uri "http://www.xiph.org/vorbis/listen/compilation-ogg-q4.ogg"